For the purpose of this page, we use the terms “rows” and “cases” as equal to refer to the entries of the dataset. In many of the processes made along the deduplication of entries in C1 dataset, we used unstandardized columns or many other data that was in fact duplicated by HASHs, that did not depend on events related to treatment.In order to find and delete duplicated data that does not add information relevant for the purposes of the study, we now may use these standardized variables as a criteria to achieve the goal of having a unique event per HASH, by reducing its complexity based on irrelevant differences.
As stated in the second part of the deduplication process, we need to consolidate and define separate treatments as blocks, by keeping information about each event’s complexities (such as referrals, changes of center, changes in plans and programs within each treatment), as variables of a single treatment. That is, to collapse intermediate events relative to a determined treatment into a single entry for each user. This will let us have a different treatment in every row.
In the previous deduplication stage, we only imputed the discharge dates of the cases that overlapped with other cases inside the database.
#table(is.na(CONS_C1_df_dup_FEB_2020$fech_nac)) #para comprobar si se hizo l imputación de las fechas de nacimiento
library(dplyr)
library(data.table)
CONS_C1_df_dup_FEB_2020 %>% dplyr::filter(is.na(fech_egres_imp)) %>% janitor::tabyl(ano_bd) %>% dplyr::mutate(percent=scales::percent(percent)) %>%
knitr::kable(format = "html", format.args = list(decimal.mark = ".", big.mark = ","),
caption="Table 1. Missing Dates of Discharge by Year of the Dataset",
align =rep('c', 3),
col.names = c("Year of Dataset", "Freq", "%")) %>%
kableExtra::kable_styling(bootstrap_options = c("striped", "hover"),font_size = 10)
| Year of Dataset | Freq | % |
|---|---|---|
| 2,010 | 11 | 0.135% |
| 2,011 | 63 | 0.776% |
| 2,012 | 10 | 0.123% |
| 2,013 | 23 | 0.283% |
| 2,014 | 15 | 0.185% |
| 2,015 | 23 | 0.283% |
| 2,016 | 55 | 0.677% |
| 2,017 | 59 | 0.727% |
| 2,018 | 122 | 1.503% |
| 2,019 | 7,738 | 95.307% |
The last user-invariant variables had many different values by user. That is why it was necessary to use different sources to overcome ambiguities. Possibly, the process of formulating an answer is one of the factors that explains the ambiguity in the answers. Many times the respondents are not precise remembering specific ages. It is reasonable to think that those with a sustained substance abuse profile would experience difficulties to recall specific information.
Age of Onset of Drug Use (edad_ini_cons) (n= 40,627), had too many distinct values by each user (n 15,253.
Age of Onset of Drug Use Primary Substance (edad_ini_sus_prin) (n= 41,794), had too many distinct values by each user (n= 15,800).
First, we discarded cases with ages of onset of drug use that were posterior to the age at admission (n= 58). We also did the same for the invalid ages of onset of primary drug use (n= 210).
CONS_C1_df_dup_FEB_2020 %>%
dplyr::mutate(edad_ini_cons=case_when(edad_al_ing<=edad_ini_cons~NA_integer_,TRUE~as.integer(edad_ini_cons)))%>% #may 2010= filtro por aquellos casos que son invalidos, para descartarlos
dplyr::mutate(edad_ini_sus_prin=case_when(edad_al_ing<=edad_ini_sus_prin~NA_integer_,TRUE~as.integer(edad_ini_sus_prin)))%>% #may 2010= filtro por aquellos casos que son invalidos, para descartarlos
dplyr::mutate(edad_ini_sus_prin=case_when(edad_ini_sus_prin<edad_ini_cons~NA_integer_,TRUE~as.integer(edad_ini_sus_prin)))%>%
assign("CONS_C1_df_dup_MAY_2020_prev0",., envir = .GlobalEnv)
The following table shows the amount of ages that varies within each user.
prueba_edad_ini_cons <- CONS_C1_df_dup_MAY_2020_prev0 %>% group_by(hash_key) %>% dplyr::mutate(edad_ini_cons_por_hash=n_distinct(edad_ini_cons)) %>% ungroup() %>% dplyr::filter(edad_ini_cons_por_hash>1) %>% dplyr::distinct(hash_key)
prueba_edad_ini_sus_prin <- CONS_C1_df_dup_MAY_2020_prev0 %>% group_by(hash_key) %>% dplyr::mutate(edad_ini_sus_prin_por_hash=n_distinct(edad_ini_sus_prin)) %>% ungroup() %>% dplyr::filter(edad_ini_sus_prin_por_hash>1) %>% dplyr::distinct(hash_key)
edad_ini_cons_summ<-
CONS_C1_df_dup_MAY_2020_prev0 %>%
dplyr::filter(hash_key %in% as.character(as.vector(unlist(as.data.table(unlist(prueba_edad_ini_cons)))))) %>%
group_by(hash_key) %>%
dplyr::add_tally() %>%
summarise(n=mean(n), edad_ini_cons_p25 = quantile(edad_ini_cons, c(0.25),na.rm=T),edad_ini_cons_p50 = quantile(edad_ini_cons, c(0.50),na.rm=T),edad_ini_cons_p75 = quantile(edad_ini_cons, c(0.75),na.rm=T),edad_ini_conssd=sd(edad_ini_cons,na.rm=T), min=min(edad_ini_cons, na.rm = T),max=max(edad_ini_cons, na.rm = T),mean=mean(edad_ini_cons,na.rm=T),ranges=abs(max-min)) %>%
ungroup()%>%
dplyr::mutate(diff_p25_p50=abs(edad_ini_cons_p50-edad_ini_cons_p25),diff_p75_p50=abs(edad_ini_cons_p50-edad_ini_cons_p75),min_mean=abs(min-mean), max_mean=abs(max-mean))%>%
summarise(avg_n=mean(n), sd_n=sd(n),avg_p25_p50=mean(diff_p25_p50),avg_p75_p50=mean(diff_p75_p50),avg_sd=mean(edad_ini_conssd,na.rm=T),avg_min_mean=mean(min_mean,na.rm=T),avg_max_mean=mean(max_mean,na.rm=T),avg_ranges=mean(ranges,na.rm=T),sd_ranges=sd(ranges,na.rm=T),p75_ranges=quantile(ranges, c(0.75),na.rm=T),p90_ranges=quantile(ranges, c(0.90),na.rm=T)) %>%
round(2)
`summarise()` ungrouping output (override with `.groups` argument)
edad_ini_sus_prin_summ<-
CONS_C1_df_dup_MAY_2020_prev0 %>%
dplyr::filter(hash_key %in% as.character(as.vector(unlist(as.data.table(unlist(prueba_edad_ini_sus_prin)))))) %>%
group_by(hash_key) %>%
dplyr::add_tally() %>%
summarise(n=mean(n),edad_ini_sus_prin_p25 = quantile(edad_ini_sus_prin, c(0.25),na.rm=T),edad_ini_sus_prin_p50 = quantile(edad_ini_sus_prin, c(0.50),na.rm=T),edad_ini_sus_prin_p75 = quantile(edad_ini_sus_prin, c(0.75),na.rm=T),edad_ini_sus_prinsd=sd(edad_ini_sus_prin,na.rm=T), min=min(edad_ini_sus_prin, na.rm = T),max=max(edad_ini_sus_prin, na.rm = T),mean=mean(edad_ini_sus_prin,na.rm=T),ranges=abs(max-min)) %>%
ungroup()%>%
dplyr::mutate(diff_p25_p50=abs(edad_ini_sus_prin_p50-edad_ini_sus_prin_p25),diff_p75_p50=abs(edad_ini_sus_prin_p50-edad_ini_sus_prin_p75),min_mean=abs(min-mean), max_mean=abs(max-mean))%>%
summarise(avg_n=mean(n), sd_n=sd(n),avg_p25_p50=mean(diff_p25_p50),avg_p75_p50=mean(diff_p75_p50),avg_sd=mean(edad_ini_sus_prinsd,na.rm=T),avg_min_mean=mean(min_mean,na.rm=T),avg_max_mean=mean(max_mean,na.rm=T),avg_ranges=mean(ranges,na.rm=T),sd_ranges=sd(ranges,na.rm=T),p75_ranges=quantile(ranges, c(0.75),na.rm=T),p90_ranges=quantile(ranges, c(0.90),na.rm=T)) %>%
round(2)
`summarise()` ungrouping output (override with `.groups` argument)
rbind(cbind(Variable="Age of Onset of Drug Use",round(edad_ini_cons_summ,2)),cbind(Variable="Age of Onset of Drug Use Primary Substance",round(edad_ini_sus_prin_summ,2))) %>%
knitr::kable(format = "html", format.args = list(decimal.mark = ".", big.mark = ","),
caption="Table 2. Distribution of Differences in Years Within Users",
align =rep('c', 101),
col.names = c("Variables","Avg. Cases per User", "Std.Dev. Cases per User","Avg. Diff. Perc 25-50", "Avg. Diff. Perc 75-50","Avg. Std.Dev","Avg. Diff. Min-Mean","Avg. Diff. Max-Mean","Avg. Range", "Std.Dev. Range","Perc 75 Range","Perc 90 Range")) %>%
kableExtra::kable_styling(bootstrap_options = c("striped", "hover"),font_size =10) %>%
kableExtra::scroll_box(width = "100%", height = "250px")
| Variables | Avg. Cases per User | Std.Dev. Cases per User | Avg. Diff. Perc 25-50 | Avg. Diff. Perc 75-50 | Avg. Std.Dev | Avg. Diff. Min-Mean | Avg. Diff. Max-Mean | Avg. Range | Std.Dev. Range | Perc 75 Range | Perc 90 Range |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Age of Onset of Drug Use | 2.66 | 1.06 | 0.86 | 0.96 | 2.63 | 1.82 | 1.93 | 3.75 | 4.96 | 4 | 9 |
| Age of Onset of Drug Use Primary Substance | 2.64 | 1.05 | 1.43 | 1.45 | 3.69 | 2.95 | 2.95 | 5.91 | 6.24 | 8 | 14 |
Considering the abovementioned, we decided to restrict the rules to obtain unique values in user-invariant variables by each user, to the 25% of users that had more considerable variability in each value of the registries present in the dataset.
knitr::include_graphics("G:/Mi unidad/Alvacast/SISTRAT 2019 (github)/SUD_CL/Figures/same_hash_distinct_values_user_invariant_top.svg")
Figure 1. Decision Tree for the Users with more than one value in a User-Invariant Variable
In case of Age of Onset of Drug Use (edad_ini_cons), users that had Age of Onset of Drug Use (edad_ini_cons) greater than 4.
knitr::include_graphics("G:/Mi unidad/Alvacast/SISTRAT 2019 (github)/SUD_CL/Figures/age_onset_drug_use_same_hash_distinct_values_user_invariant.svg")
Figure 2. Decision Tree for the Users with more than one value in a Age of Onset of Substance Use of Primary Substance
CONS_C1_df_dup_MAY_2020_prev0_edad_ini_cons <- CONS_C1_df_dup_MAY_2020_prev0 %>% group_by(hash_key) %>% dplyr::mutate(edad_ini_cons_por_hash=n_distinct(edad_ini_cons)) %>% ungroup() %>% dplyr::filter(edad_ini_cons_por_hash>1) %>% dplyr::distinct(hash_key)
CONS_C1_df_dup_FEB_2020 %>%
dplyr::filter(hash_key %in% as.character(as.vector(unlist(as.data.table(unlist(CONS_C1_df_dup_MAY_2020_prev0_edad_ini_cons)))))) %>% # Select HASHs of cited cases
dplyr::arrange(hash_key) %>% #ordeno por ids
dplyr::select(row, hash_key, ano_bd, edad_ini_cons, edad, fech_nac,edad_al_ing, fech_ing, fech_egres_imp, tipo_de_plan, senda)%>%
head(40)%>%
knitr::kable(format = "html", format.args = list(decimal.mark = ".", big.mark = ","),
caption="Table 3. HASHs with more than one Age of Onset of Drug Use (First 40 Cases)",
align =rep('c', 101)) %>%
kableExtra::kable_styling(bootstrap_options = c("striped", "hover"),font_size = 8) %>%
kableExtra::scroll_box(width = "100%", height = "375px")
| row | hash_key | ano_bd | edad_ini_cons | edad | fech_nac | edad_al_ing | fech_ing | fech_egres_imp | tipo_de_plan | senda |
|---|---|---|---|---|---|---|---|---|---|---|
| 157,456 | 00012586ea3036b7a18093c396847a87 | 2,019 | 15 | 42 | 1977-11-12 | 41.47023 | 2019-05-03 | NA | PG-PAI | Si |
| 53,084 | 00012586ea3036b7a18093c396847a87 | 2,014 | 13 | 42 | 1977-11-12 | 36.15606 | 2014-01-08 | 2014-11-03 | PG-PR | No |
| 120,237 | 0007678b8b35fa0961d1e8110fbf9620 | 2,017 | 15 | 31 | 1988-03-08 | 29.39904 | 2017-08-01 | 2017-09-19 | M-PR | Si |
| 117,796 | 0007678b8b35fa0961d1e8110fbf9620 | 2,017 | 15 | 31 | 1988-03-08 | 29.23203 | 2017-06-01 | 2017-07-05 | M-PR | No |
| 109,116 | 0007678b8b35fa0961d1e8110fbf9620 | 2,017 | 19 | 31 | 1988-03-08 | 28.49555 | 2016-09-05 | 2017-05-29 | PG-PAI | Si |
| 21,420 | 000abb62b93e12b04ad68c69e37597a6 | 2,012 | 14 | 37 | 1982-10-25 | 28.51745 | 2011-05-02 | 2012-03-19 | PG-PAI | Si |
| 2,859 | 000abb62b93e12b04ad68c69e37597a6 | 2,010 | NA | 37 | 1982-10-25 | 25.66735 | 2008-06-25 | 2010-06-23 | PG-PAI | Si |
| 57,760 | 000ec7b631988f81f3fc07f4de6cb9a9 | 2,014 | 15 | 39 | 1980-06-14 | 33.93566 | 2014-05-22 | 2014-07-24 | PG-PAI | Si |
| 52,499 | 000ec7b631988f81f3fc07f4de6cb9a9 | 2,014 | 16 | 39 | 1980-06-14 | 33.48939 | 2013-12-10 | 2014-02-28 | PG-PAB | Si |
| 36,044 | 000ec7b631988f81f3fc07f4de6cb9a9 | 2,013 | 15 | 39 | 1980-06-14 | 32.58590 | 2013-01-14 | 2013-11-28 | PG-PAI | Si |
| 90,698 | 000ff5e2fdd25462e4febeb6a9099bec | 2,016 | 14 | 50 | 1969-05-16 | 46.46954 | 2015-11-04 | 2016-09-14 | PG-PR | Si |
| 19,994 | 000ff5e2fdd25462e4febeb6a9099bec | 2,011 | 12 | 50 | 1969-05-16 | 42.51061 | 2011-11-19 | 2012-01-31 | PG-PAI | Si |
| 29,383 | 001022ffb28057b24dd76900bbf1e3de | 2,012 | 14 | 37 | 1982-04-20 | 30.25873 | 2012-07-23 | 2012-11-02 | M-PR | Si |
| 16,163 | 001022ffb28057b24dd76900bbf1e3de | 2,011 | 15 | 37 | 1982-04-20 | 29.10062 | 2011-05-27 | 2011-10-10 | PG-PAI | Si |
| 162,840 | 0012beab59a3a84eec95c9371f393a06 | 2,019 | 15 | 27 | 1991-11-26 | 27.76728 | 2019-09-02 | NA | PG-PAB | Si |
| 156,952 | 0012beab59a3a84eec95c9371f393a06 | 2,019 | 14 | 27 | 1991-11-26 | 27.48802 | 2019-05-23 | 2019-08-29 | PG-PR | Si |
| 123,290 | 001844aad3a5ef098c4c1d5e479ccbd6 | 2,017 | 14 | 37 | 1982-02-12 | 35.64134 | 2017-10-04 | 2017-12-01 | PG-PAB | Si |
| 86,678 | 001844aad3a5ef098c4c1d5e479ccbd6 | 2,016 | 15 | 37 | 1982-02-12 | 33.09240 | 2015-03-18 | 2016-12-20 | M-PR | Si |
| 66,251 | 001844aad3a5ef098c4c1d5e479ccbd6 | 2,015 | 15 | 37 | 1982-02-12 | 31.89049 | 2014-01-03 | 2015-03-16 | M-PAI | Si |
| 92,601 | 001b0ff241cd0d95828b86b4bdab8c19 | 2,016 | 20 | 52 | 1967-06-30 | 48.54209 | 2016-01-14 | 2016-05-12 | PG-PR | Si |
| 37,992 | 001b0ff241cd0d95828b86b4bdab8c19 | 2,013 | 18 | 52 | 1967-06-30 | 45.74127 | 2013-03-27 | 2013-06-28 | PG-PAI | Si |
| 31,481 | 001b0ff241cd0d95828b86b4bdab8c19 | 2,012 | 17 | 52 | 1967-06-30 | 45.34155 | 2012-11-01 | 2013-01-02 | PG-PAB | Si |
| 73,339 | 001ba6dfc8332930f9d9d20a0fa6685b | 2,015 | 14 | 26 | 1993-06-28 | 21.60712 | 2015-02-05 | 2015-03-24 | PG-PAI | No |
| 44,192 | 001ba6dfc8332930f9d9d20a0fa6685b | 2,013 | 13 | 26 | 1993-06-28 | 20.22177 | 2013-09-17 | 2013-09-30 | PG-PR | Si |
| 36,728 | 001ba6dfc8332930f9d9d20a0fa6685b | 2,013 | 13 | 26 | 1993-06-28 | 19.61123 | 2013-02-06 | 2013-03-20 | PG-PR | Si |
| 139,264 | 001fb4d82755ca201c292fe318fef341 | 2,018 | 15 | 55 | 1963-12-14 | 54.51608 | 2018-06-20 | 2018-10-19 | PG-PR | Si |
| 32,645 | 001fb4d82755ca201c292fe318fef341 | 2,013 | 18 | 55 | 1963-12-14 | 48.09309 | 2012-01-17 | 2013-08-27 | PG-PAI | Si |
| 35,823 | 00227e8787d1ce564dae87621440d48b | 2,013 | 14 | 45 | 1974-10-18 | 38.22861 | 2013-01-09 | 2013-11-01 | M-PAI | Si |
| 32,399 | 00227e8787d1ce564dae87621440d48b | 2,013 | 15 | 45 | 1974-10-18 | 37.23203 | 2012-01-11 | 2013-01-04 | PG-PAI | Si |
| 4,824 | 00227e8787d1ce564dae87621440d48b | 2,010 | NA | 45 | 1974-10-18 | 35.52635 | 2010-04-28 | 2010-08-10 | PG-PAI | Si |
| 72,657 | 00237788c4c803c12fecac82105ea4f0 | 2,015 | 13 | 37 | 1982-08-26 | 32.43806 | 2015-02-02 | 2015-09-23 | PG-PAI | Si |
| 46,208 | 00237788c4c803c12fecac82105ea4f0 | 2,013 | 14 | 37 | 1982-08-26 | 31.21424 | 2013-11-12 | 2014-02-26 | PG-PAB | Si |
| 139,158 | 002a54a1864024540089017666091fc0 | 2,018 | 27 | 39 | 1980-10-31 | 37.65366 | 2018-06-27 | 2018-11-23 | PG-PR | Si |
| 10,890 | 002a54a1864024540089017666091fc0 | 2,011 | NA | 39 | 1980-10-31 | 29.67830 | 2010-07-06 | 2011-03-31 | PG-PAB | Si |
| 122,564 | 002b4df919e2b1cc6ff0cdb26b27a514 | 2,017 | 14 | 36 | 1983-09-23 | 34.00684 | 2017-09-25 | 2017-12-15 | PG-PAI | Si |
| 76,859 | 002b4df919e2b1cc6ff0cdb26b27a514 | 2,015 | 15 | 36 | 1983-09-23 | 31.67693 | 2015-05-28 | 2015-11-27 | PG-PAB | Si |
| 34,105 | 002c979e254773f17812d9bff13996dc | 2,013 | 16 | 35 | 1983-12-05 | 28.85147 | 2012-10-11 | 2013-01-04 | PG-PAB | Si |
| 4,271 | 002c979e254773f17812d9bff13996dc | 2,010 | NA | 35 | 1983-12-05 | 26.28337 | 2010-03-18 | 2010-05-31 | PG-PAI | Si |
| 158,646 | 00335a6165270de0986718e354c20dcb | 2,019 | 12 | 58 | 1961-08-05 | 57.86995 | 2019-06-19 | 2019-07-17 | PG-PR | Si |
| 156,853 | 00335a6165270de0986718e354c20dcb | 2,019 | 15 | 58 | 1961-08-05 | 57.76865 | 2019-05-13 | 2019-06-14 | PG-PAI | Si |
#edad_ini_cons_summ[,"p75_ranges"]
#edad_ini_cons_summ[,"p90_diff_p75_p50"]
#invisible(
#CONS_C1_df_dup_MAY_2020_prev%>%
# edad_ini_cons_lo_75%>%
# dplyr::filter(hash_key %in% c("014168e096787bf7e4c6951a3b4c27de","0110bb39c8fffafe0bbbe1fd17f51e71")) %>%
# dplyr::select(row, hash_key, obs)
# edad_ini_cons_lo_75%>%
# dplyr::filter(hash_key %in% c("014168e096787bf7e4c6951a3b4c27de","0110bb39c8fffafe0bbbe1fd17f51e71"))
#
## data.frame(hash_key=edad_ini_cons_up_75)%>%
# dplyr::filter(hash_key %in% c("014168e096787bf7e4c6951a3b4c27de","0110bb39c8fffafe0bbbe1fd17f51e71"))
#)
###PARA HACER LA CONVERSION
#_______________________
edad_ini_cons_up_75<-
as.character(
CONS_C1_df_dup_MAY_2020_prev0 %>%
dplyr::filter(hash_key %in% as.character(as.vector(unlist(as.data.table(unlist(CONS_C1_df_dup_MAY_2020_prev0_edad_ini_cons)))))) %>%
dplyr::group_by(hash_key) %>%
dplyr::mutate(range=abs(max(edad_ini_cons,na.rm=T)-abs(min(edad_ini_cons,na.rm=T)))) %>%
dplyr::filter(range>as.numeric(edad_ini_cons_summ[,"p75_ranges"]))%>%
#dplyr::select(hash_key, range)
distinct(hash_key)%>%
unlist())
##BAJO EL PERCENTIL 75, SE REEMPLAZA CON LA MEDIA
edad_ini_cons_lo_75<-
CONS_C1_df_dup_MAY_2020_prev0 %>%
dplyr::filter(hash_key %in% as.character(as.vector(unlist(as.data.table(unlist(CONS_C1_df_dup_MAY_2020_prev0_edad_ini_cons)))))) %>%
dplyr::group_by(hash_key) %>%
dplyr::mutate(mean_edad_ini_cons_lo75=round(mean(edad_ini_cons,na.rm=T),0),range=abs(max(edad_ini_cons,na.rm=T)-abs(min(edad_ini_cons,na.rm=T)))) %>%
dplyr::ungroup()%>%
dplyr::filter(range<=as.numeric(edad_ini_cons_summ[,"p75_ranges"]))%>%
dplyr::select(hash_key,mean_edad_ini_cons_lo75)%>%
dplyr::distinct(hash_key,.keep_all=T)
##VER el resumen de los casos
#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% as.character(unlist(CONS_C1_df_dup_MAY_2020_prev0_edad_ini_cons[,"hash_key"]))) %>% group_by(hash_key)%>% print()
#<- CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% edad_ini_cons_up_75) %>% dplyr::group_by(hash_key) %>% dplyr::add_tally(name="n_edad_ini_cons_sus") %>% dplyr::mutate(n_dis=n_distinct(ano_bd)) %>% dplyr::ungroup() %>% dplyr::filter(n_dis>1)%>% distinct(hash_key)%>% unlist()%>% as.character()
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_______________________
###PARA HACER LA CONVERSION en los mayores al 75 (edad_ini_cons_great_75)
#_______________________
#_#_#_#_#_#_
#1. distinta edad, bd tratamiento más reciente- Dejar la fecha del tratamiento más reciente
#proviene de más de una base de datos anual
CONS_C1_df_dup_MAY_2020_prev0 %>%
dplyr::filter(hash_key %in% edad_ini_cons_up_75) %>%
dplyr::group_by(hash_key) %>%
dplyr::add_tally(name="n_edad_ini_cons_sus") %>%
dplyr::mutate(n_dis=n_distinct(ano_bd)) %>%
dplyr::ungroup() %>%
dplyr::filter(n_dis>1,!is.na(edad_ini_cons)) %>%
dplyr::arrange(hash_key,desc(ano_bd)) %>% #may 2020, agregué descendiente la edad, de más reciente a más antiguo
dplyr::select(row, hash_key, ano_bd, edad_ini_cons, edad, fech_nac,edad_al_ing,n_edad_ini_cons_sus)%>%
dplyr::group_by(hash_key)%>%
dplyr::mutate(max_ano=max(ano_bd))%>%
#dplyr::slice(which.max(ano_bd)) %>% #MAY 2020, dejé como un procedimiento de APR 2020
dplyr::filter(max_ano==ano_bd) %>%
dplyr::ungroup()%>%
assign("hash_edad_ini_cons_most_recent_db",., envir = .GlobalEnv) %>% #APR 2020= 3,416 casos // #MAY 2020= 3,931 (3,416 usuarios)
dplyr::group_by(hash_key)%>%
distinct(edad_ini_cons,.keep_all=T)%>%
dplyr::mutate(n_dis=n_distinct(edad_ini_cons)) %>%
dplyr::filter(n_dis>1)%>% #45
dplyr::mutate(edad_ini_cons_=paste0("edad_ini_cons_",row_number()))%>%
tidyr::pivot_wider(id_cols =hash_key,names_from = edad_ini_cons_, values_from = edad_ini_cons,names_repair="minimal",values_fill = list(n = ""))%>%
dplyr::rename("edad_ini_cons"="edad_ini_cons_1")%>%
assign("hash_edad_ini_cons_most_recent_db_more_one_value_1b",., envir = .GlobalEnv) #1,268 casos de 625 HASHs
hash_edad_ini_cons_most_recent_db_1a <- hash_edad_ini_cons_most_recent_db%>% #3,031
dplyr::select(-n_edad_ini_cons_sus)%>%
group_by(hash_key)%>%
distinct(edad_ini_cons,.keep_all=T)%>%
dplyr::mutate(n_dis=n_distinct(edad_ini_cons)) %>%
dplyr::filter(n_dis==1) %>%
ungroup()%>%
dplyr::select(-n_dis,-row,-ano_bd,-max_ano)
#_#_#_#_#_#_
#_#_#_#_#_#_
#2a. distinta edad, misma bd tratamiento, más de 2 casos- Dejar la fecha del tratamiento más frecuente
#misma edad base de datos por año, pero más de 2 casos ---> valor + frecuente
CONS_C1_df_dup_MAY_2020_prev0 %>%
dplyr::filter(hash_key %in% edad_ini_cons_up_75) %>%
dplyr::group_by(hash_key) %>%
dplyr::add_tally() %>%
dplyr::mutate(n_dis=n_distinct(ano_bd)) %>%
dplyr::ungroup() %>%
dplyr::filter(n_dis==1,n>2) %>% #más de 2 hash, pero todos dentro de la misma bd del mismo año
dplyr::select(-n) %>%
dplyr::filter(!is.na(edad_ini_cons))%>%
dplyr::mutate(concat_hash_edadinicons=paste0(hash_key,"_",edad_ini_cons)) %>%
dplyr::group_by(concat_hash_edadinicons) %>%
dplyr::add_tally() %>% #agrego un nuevo n, para contar los distintos nacionalidades
dplyr::ungroup() %>%
dplyr::select(row, hash_key, ano_bd, edad_ini_cons, edad, fech_nac,edad_al_ing,n)%>%
dplyr::group_by(hash_key) %>%
#dplyr::slice(which.max(n)) %>% #me quedo con la concatenación por hash key que más se repite.
dplyr::top_n(n)%>%
dplyr::rename("cases_by_concat_hash_edad_ini_cons"="n")%>%
dplyr::ungroup() %>%
assign("hash_edad_ini_cons_most_freq_value",., envir = .GlobalEnv)%>% # APR 2020= 43 casos // MAY 2020, 99 casos, 43 usuarios.
dplyr::select(-cases_by_concat_hash_edad_ini_cons)%>%
group_by(hash_key)%>%
add_tally()%>%
dplyr::filter(n>1)%>% #99 casos
dplyr::mutate(edad_ini_cons_=paste0("edad_ini_cons_",row_number()))%>%
tidyr::pivot_wider(id_cols =hash_key,names_from = edad_ini_cons_, values_from = edad_ini_cons,names_repair="minimal",values_fill = list(n = ""))%>%
dplyr::rename("edad_ini_cons"="edad_ini_cons_1")%>%
assign("hash_sus_ini_most_freq_value_more_one_value_2a2",., envir = .GlobalEnv) #136
#seleccionar los casos en que en la misma base de datos hay sólo un caso que es mayor
hash_edad_ini_cons_most_freq_value_2a1 <- hash_edad_ini_cons_most_freq_value%>%
dplyr::select(-cases_by_concat_hash_edad_ini_cons)%>%
group_by(hash_key)%>%
add_tally()%>%
dplyr::filter(n==1) %>%
dplyr::select(-n, -row, -ano_bd)
#_#_#_#_#_#_
#_#_#_#_#_#_
#2b. distinta edad, misma bd tratamiento, más de 2 casos- Dejar la fecha del tratamiento más frecuente. Casos con fecha de trat + reciente
CONS_C1_df_dup_MAY_2020_prev0 %>%
dplyr::filter(hash_key %in% as.character(unlist(hash_edad_ini_cons_most_recent_db_more_one_value_1b["hash_key"])))%>%
dplyr::group_by(hash_key,edad_ini_cons) %>%
dplyr::add_tally(name="n_por_hash_edad_ini_cons") %>%
dplyr::ungroup()%>%
dplyr::filter(!is.na(edad_ini_cons))%>%
dplyr::group_by(hash_key) %>%
dplyr::add_tally(name="n_por_hash") %>%
dplyr::arrange(desc(n_por_hash_edad_ini_cons))%>%
# dplyr::ungroup()%>%
dplyr::top_n(1,n_por_hash_edad_ini_cons)%>%
dplyr::arrange(desc(n_por_hash),hash_key)%>%
dplyr::distinct(hash_key,edad_ini_cons,.keep_all=T)%>%
dplyr::select(row, hash_key, ano_bd, edad_ini_cons,edad_al_ing, n_por_hash,n_por_hash_edad_ini_cons) %>%
dplyr::group_by(hash_key)%>%
dplyr::add_tally(name="n_por_hash_edad_ini_cons") %>%
assign("hash_edad_ini_cons_most_recent_db_more_one_value_mfv_2b",., envir = .GlobalEnv)
hash_edad_ini_cons_most_recent_db_more_one_value_mfv_2b %>%
dplyr::filter(n_por_hash_edad_ini_cons>1)%>% #45
dplyr::mutate(edad_ini_cons_=paste0("edad_ini_cons_",row_number()))%>%
tidyr::pivot_wider(id_cols =hash_key,names_from = edad_ini_cons_, values_from = edad_ini_cons,names_repair="minimal",values_fill = list(n = ""))%>%
dplyr::rename("edad_ini_cons"="edad_ini_cons_1")%>%
assign("hash_edad_ini_cons_most_recent_db_more_one_value__mfv_more_one_value_2b2",., envir = .GlobalEnv)
hash_edad_ini_cons_most_recent_db_more_one_value_mfv_2b1<-
hash_edad_ini_cons_most_recent_db_more_one_value_mfv_2b%>%
dplyr::filter(n_por_hash_edad_ini_cons==1)%>%
dplyr::select(hash_key,edad_ini_cons)
#_#_#_#_#_#_
#_#_#_#_#_#_
# 3. Sólo 2 casos . fechas de nacimiento, en la misma base de datos anual.
#misma edad base de datos por año, pero sólo 2 casos ---> se obtiene la media
#Actualizar a mayo
CONS_C1_df_dup_MAY_2020_prev0 %>%
dplyr::filter(hash_key %in% edad_ini_cons_up_75) %>%
dplyr::group_by(hash_key) %>%
dplyr::add_tally() %>%
dplyr::mutate(n_dis=n_distinct(ano_bd)) %>%
dplyr::ungroup() %>%
dplyr::filter(n_dis==1,n==2) %>% #casos en que hay que recurrir a otras variables
dplyr::arrange(hash_key) %>%
dplyr::select(row, hash_key, ano_bd, edad_ini_cons, edad, fech_nac,edad_al_ing)%>%
dplyr::group_by(hash_key) %>%
dplyr::mutate(rn=row_number()) %>%
as.data.frame() %>%
reshape(idvar = "hash_key", timevar = "rn", direction = "wide") %>%
dplyr::mutate(mean_edad_ini_cons=round(rowMeans(cbind(edad_ini_cons.1,edad_ini_cons.2), na.rm=T),0)) %>%
dplyr::select(hash_key,mean_edad_ini_cons) %>%
assign("edad_ini_cons_misma_bd_2_casos_3",., envir = .GlobalEnv)
invisible(
CONS_C1_df_dup_MAY_2020_prev0 %>%
dplyr::filter(hash_key %in% as.character(as.vector(unlist(as.data.table(unlist(edad_ini_cons_misma_bd_2_casos_3[,"hash_key"])))))) %>%
dplyr::filter(hash_key %in% c("014168e096787bf7e4c6951a3b4c27de","0110bb39c8fffafe0bbbe1fd17f51e71"))%>%
dplyr::select(hash_key,ano_bd,edad_ini_cons,obs)
)
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% edad_ini_cons_up_75) %>% group_by(hash_key)%>% print()
#CONS_C1_df_dup_MAY_2020_prev0 %>%
#dplyr::filter(hash_key %in% as.character(unlist(hash_sus_ini_most_freq_value_more_one_value_2a2[,"hash_key"]))) %>% group_by(hash_key)%>% print()
#CONS_C1_df_dup_MAY_2020_prev0 %>%
#dplyr::filter(hash_key %in% as.character(unlist(hash_edad_ini_cons_most_recent_db_1a[,"hash_key"]))) %>% group_by(hash_key)%>% print()
#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% as.character(unlist(hash_edad_ini_cons_most_recent_db_more_one_value_1b[,"hash_key"]))) %>% group_by(hash_key)%>% print()
#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% as.character(unlist(hash_edad_ini_cons_most_recent_db_more_one_value_mfv_2b1[,"hash_key"]))) %>% group_by(hash_key)%>% print()
#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% as.character(unlist(hash_edad_ini_cons_most_recent_db_more_one_value__mfv_more_one_value_2b2[,"hash_key"]))) %>% group_by(hash_key)%>% print()
#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% as.character(unlist(hash_edad_ini_cons_most_recent_db_more_one_value__mfv_more_one_value_2b2[,"hash_key"]))) %>% group_by(hash_key)%>% print()
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
invisible(c("Manual Review"))
invisible(
CONS_C1_df_dup_MAY_2020_prev0 %>%
dplyr::filter(hash_key %in% c(as.character(unlist(edad_ini_cons_misma_bd_2_casos_3[,"hash_key"])),
as.character(unlist(hash_sus_ini_most_freq_value_more_one_value_2a2[,"hash_key"])),
as.character(unlist(hash_edad_ini_cons_most_recent_db_more_one_value__mfv_more_one_value_2b2[,"hash_key"]))))%>%
dplyr::arrange(hash_key)%>%
dplyr::filter(!is.na(edad_ini_cons))%>%
dplyr::select(hash_key, ano_bd,edad_al_ing, edad_inicio_consumo,edad_ini_cons, edad_inicio_sustancia_principal, edad_ini_sus_prin)
#1480
)
casos_fecha_inicio_cons_sus_empates_3 <-
CONS_C1_df_dup_MAY_2020_prev0 %>%
dplyr::filter(hash_key %in% c(as.character(unlist(edad_ini_cons_misma_bd_2_casos_3[,"hash_key"])),
as.character(unlist(hash_sus_ini_most_freq_value_more_one_value_2a2[,"hash_key"])),
as.character(unlist(hash_edad_ini_cons_most_recent_db_more_one_value__mfv_more_one_value_2b2[,"hash_key"]))))%>%
dplyr::filter(!is.na(edad_ini_cons))%>%
group_by(hash_key) %>%
summarise(mean_edad_ini_cons=round(mean(edad_ini_cons,na.rm=T),0))
#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% as.character(unlist(casos_con_fechas_invalidas_por_fecha_inicio_cons_sus_prin_2_casos_3a[,"hash_key"])))%>% group_by(hash_key)
#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% as.character(unlist(casos_con_fechas_invalidas_por_fecha_inicio_cons_sus_prin_2_casos_3a[,"hash_key"])))%>% group_by(hash_key)
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#
#hash_edad_ini_cons_most_recent_db_more_one_value_mfv_2b1
# casos_con_fechas_invalidas_por_fecha_inicio_cons_sus_prin_2_casos_3a
CONS_C1_df_dup_MAY_2020_prev0 %>%
#janitor::tabyl(sexo_2) %>%
#0b
dplyr::mutate(obs=case_when(hash_key %in% as.character(as.vector(unlist(as.data.table(unlist(edad_ini_cons_lo_75[,"hash_key"])))))~glue::glue("{obs};3.01.0b.HASH w/ more than one distinct Age of Onset of Drug Use.Minor differences within users,replaced with mean"),TRUE~obs))%>%
dplyr::left_join(edad_ini_cons_lo_75,by="hash_key", suffix=c("","_edad_lo_75"))%>%
dplyr::mutate(edad_ini_cons= ifelse(!is.na(mean_edad_ini_cons_lo75), mean_edad_ini_cons_lo75, edad_ini_cons)) %>%
dplyr::select(-mean_edad_ini_cons_lo75) %>%
#1a
dplyr::mutate(obs=case_when(hash_key %in% as.character(as.vector(unlist(as.data.table(unlist(hash_edad_ini_cons_most_recent_db_1a)))))~glue::glue("{obs};3.01.1a.HASH w/ more than one distinct Age of Onset of Drug Use. Recent db"),TRUE~obs))%>%
dplyr::left_join(hash_edad_ini_cons_most_recent_db_1a, by="hash_key",suffix=c("","_edadinicons_recent_db")) %>%
dplyr::mutate(edad_ini_cons= ifelse(!is.na(edad_ini_cons_edadinicons_recent_db), edad_ini_cons_edadinicons_recent_db, edad_ini_cons)) %>%
dplyr::select(-ends_with("_edadinicons_recent_db")) %>%
#2a1
dplyr::mutate(obs=case_when(hash_key %in% as.character(as.vector(unlist(as.data.table(unlist(hash_edad_ini_cons_most_freq_value_2a1)))))~glue::glue("{obs};3.01.2a1.HASH w/ more than one distinct Age of Onset of Drug Use. Most frequent value"),TRUE~obs))%>%
dplyr::left_join(hash_edad_ini_cons_most_freq_value_2a1, by="hash_key",suffix=c("","_edadinicons_mfv")) %>%
dplyr::mutate(edad_ini_cons= ifelse(!is.na(edad_ini_cons_edadinicons_mfv), edad_ini_cons_edadinicons_mfv, edad_ini_cons)) %>%
dplyr::select(-ends_with("_edadinicons_mfv")) %>%
#2b1
dplyr::mutate(obs=case_when(hash_key %in% as.character(as.vector(unlist(as.data.table(unlist(hash_edad_ini_cons_most_recent_db_more_one_value_mfv_2b1)))))~glue::glue("{obs};3.01.2b1.HASH w/ more than one distinct Age of Onset of Drug Use.>1 recent DB, mfv"),TRUE~obs))%>%
dplyr::left_join(hash_edad_ini_cons_most_recent_db_more_one_value_mfv_2b1, by="hash_key",suffix=c("","_edadinicons_recent_db_mfv")) %>%
dplyr::mutate(edad_ini_cons= ifelse(!is.na(edad_ini_cons_edadinicons_recent_db_mfv), edad_ini_cons_edadinicons_recent_db_mfv, edad_ini_cons)) %>%
dplyr::select(-ends_with("_edadinicons_recent_db_mfv")) %>%
# dplyr::filter(!is.na(mean_edad_ini_cons))%>% dplyr::select(hash_key,edad_ini_cons,mean_edad_ini_cons)%>%#solo una prueba
#3
dplyr::mutate(obs=case_when(hash_key %in% as.character(as.vector(unlist(as.data.table(unlist(casos_fecha_inicio_cons_sus_empates_3)))))~glue::glue("{obs};3.01.3b.HASH w/ more than one distinct Age of Onset of Drug Use.2 cases, same yearly dataset or ties"),TRUE~obs))%>%
dplyr::left_join(casos_fecha_inicio_cons_sus_empates_3, by="hash_key",suffix=c("","_edadinicons_misma_bd_2_casos_3b")) %>%
dplyr::mutate(edad_ini_cons= ifelse(!is.na(mean_edad_ini_cons), mean_edad_ini_cons, edad_ini_cons)) %>%
dplyr::select(-ends_with("_edadinicons_misma_bd_2_casos"),-mean_edad_ini_cons) %>%
assign("CONS_C1_df_dup_MAY_2020_prev",., envir = .GlobalEnv)
#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% as.character(unlist(casos_con_fechas_invalidas_por_fecha_inicio_cons_sus_prin_2_casos_3a[,"hash_key"])))%>% group_by(hash_key)
##dim(CONS_C1_df_dup_MAY_2020_prev);names(CONS_C1_df_dup_MAY_2020_prev)
#CONS_C1_df_dup_MAY_2020_prev %>% group_by(hash_key) %>% dplyr::mutate(edad_ini_cons_por_hash=n_distinct(edad_ini_cons)) %>% ungroup() %>% dplyr::filter(edad_ini_cons_por_hash>1) %>% dplyr::select(hash_key,obs)%>% View()
#CONS_C1_df_dup_MAY_2020_prev %>% group_by(hash_key) %>% dplyr::mutate(edad_ini_cons_por_hash=n_distinct(edad_ini_cons)) %>% ungroup() %>% dplyr::filter(edad_ini_cons_por_hash>1) %>% nrow() %>% formatC(, format="f", big.mark=",", digits=0)
#CONS_C1_df_dup_MAY_2020_prev %>% dplyr::filter(grepl('3.01.3b.', obs)) %>% dplyr::group_by(hash_key)
invisible(
CONS_C1_df_dup_MAY_2020_prev%>%
dplyr::filter(hash_key %in% c("014168e096787bf7e4c6951a3b4c27de","0110bb39c8fffafe0bbbe1fd17f51e71"))%>%
dplyr::select(row, hash_key, edad_ini_cons, obs)
)
invisible(
CONS_C1_df_dup_MAY_2020_prev0 %>%
dplyr::filter(hash_key %in% as.character(as.vector(unlist(as.data.table(unlist(edad_ini_cons_misma_bd_2_casos_3[,"hash_key"])))))) %>%
dplyr::filter(hash_key %in% c("014168e096787bf7e4c6951a3b4c27de","0110bb39c8fffafe0bbbe1fd17f51e71"))%>%
dplyr::select(hash_key,ano_bd,edad_ini_cons,obs)
)
#dim(CONS_C1_df_dup_MAY_2020_prev) #117,387, 140
#dim(CONS_C1_df_dup_FEB_2020) #117,387, 140
#CONS_C1_df_dup_MAY_2020_prev %>% dplyr::group_by(obs) %>% summarise(n=n()) %>% dplyr::filter(n,grepl('3.01.', obs)) %>% View()
#CONS_C1_df_dup_MAY_2020_prev %>% dplyr::group_by(obs) %>% summarise(n=n()) %>% dplyr::filter(n,grepl('3.02.', obs)) %>% View()
CONS_C1_df_dup_MAY_2020_prev_edad_ini_sus_prin <-
CONS_C1_df_dup_MAY_2020_prev %>%
dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
dplyr::group_by(concat_hash_sus_prin) %>%
dplyr::mutate(sus_prin_y_edad_ini_sus_prin_por_hash=n_distinct(edad_ini_sus_prin)) %>%
ungroup() %>%
dplyr::filter(sus_prin_y_edad_ini_sus_prin_por_hash>1) %>%
dplyr::select(row,hash_key,concat_hash_sus_prin,sus_prin_y_edad_ini_sus_prin_por_hash,sus_principal,edad_ini_sus_prin) %>%
dplyr::distinct(concat_hash_sus_prin,.keep_all=T)
cases_affected_by_hash_sus_prin_age<- CONS_C1_df_dup_MAY_2020_prev %>%
dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
dplyr::group_by(concat_hash_sus_prin) %>%
dplyr::mutate(sus_prin_y_edad_ini_sus_prin_por_hash=n_distinct(edad_ini_sus_prin)) %>%
ungroup() %>%
dplyr::filter(sus_prin_y_edad_ini_sus_prin_por_hash>1) %>% nrow()
summ_edad_ini_cons_sus_prin_por_concat_hash_sus_prin<-
CONS_C1_df_dup_MAY_2020_prev %>%
dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
dplyr::filter(concat_hash_sus_prin %in% as.character(as.vector(unlist(as.data.table(unlist(CONS_C1_df_dup_MAY_2020_prev_edad_ini_sus_prin[,"concat_hash_sus_prin"])))))) %>%
dplyr::group_by(concat_hash_sus_prin) %>%
dplyr::add_tally() %>%
summarise(n=mean(n),edad_ini_sus_prin_p25 = quantile(edad_ini_sus_prin, c(0.25),na.rm=T),edad_ini_sus_prin_p50 = quantile(edad_ini_sus_prin, c(0.50),na.rm=T),edad_ini_sus_prin_p75 = quantile(edad_ini_sus_prin, c(0.75),na.rm=T),edad_ini_sus_prinsd=sd(edad_ini_sus_prin,na.rm=T), min=min(edad_ini_sus_prin, na.rm= T),max=max(edad_ini_sus_prin, na.rm= T),mean=mean(edad_ini_sus_prin,na.rm=T),ranges=range(edad_ini_sus_prin,na.rm=T, finite=T)[2]-range(edad_ini_sus_prin,na.rm=T, finite=T)[1]) %>%
ungroup()%>%
dplyr::mutate(diff_p25_p50=abs(edad_ini_sus_prin_p50-edad_ini_sus_prin_p25),diff_p75_p50=abs(edad_ini_sus_prin_p50-edad_ini_sus_prin_p75),min_mean=abs(min-mean), max_mean=abs(max-mean))%>%
summarise(avg_n=mean(n), sd_n=sd(n),avg_p25_p50=mean(diff_p25_p50, na.rm=T),avg_p75_p50=mean(diff_p75_p50, na.rm=T),avg_sd=mean(edad_ini_sus_prinsd,na.rm=T),avg_min_mean=mean(min_mean,na.rm=T),avg_max_mean=mean(max_mean,na.rm=T),avg_ranges=mean(ranges,na.rm=T),sd_ranges=sd(ranges,na.rm=T),p75_ranges=quantile(ranges, c(0.75),na.rm=T),p90_ranges=quantile(ranges, c(0.90),na.rm=T)) %>%
round(2)
`summarise()` ungrouping output (override with `.groups` argument)
In the case of Age of Onset of Drug Use Primary Substance (edad_ini_sus_prin), we needed to check for differences within each user, but for every admission in which he/she reported a common primary substance of admission. 33,500 entries had different ages of onset of drug use, in different treatments where they reported the same primary substance. For cases with ranges lower than 6 years or more, we replaced the age of onset of drug use with the average age for each user that reported the same primary substance.
knitr::include_graphics("G:/Mi unidad/Alvacast/SISTRAT 2019 (github)/SUD_CL/Figures/age_onset_drug_use_prim_substance_same_hash_distinct_values_user_invariant.svg")
Figure 3. Decision Tree for the Users with more than one value in a Age of Onset of Substance Use of Primary Substance
#336+2834 combinaciones #3 más 2a
CONS_C1_df_dup_MAY_2020_prev %>%
dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
dplyr::filter(concat_hash_sus_prin %in% as.character(as.vector(unlist(as.data.table(unlist(CONS_C1_df_dup_MAY_2020_prev_edad_ini_sus_prin[,"concat_hash_sus_prin"])))))) %>% # Select HASHs of cited cases
dplyr::arrange(concat_hash_sus_prin) %>% #ordeno por ids
dplyr::select(row, concat_hash_sus_prin,hash_key, ano_bd, edad_ini_sus_prin, sus_principal,edad_al_ing, fech_ing, fech_egres_imp, tipo_de_plan, senda)%>%
head(40)%>%
knitr::kable(format = "html", format.args = list(decimal.mark = ".", big.mark = ","),
caption="Table 4. Entries of Users with the same Primary Substance, with more than one Age of Onset of Drug Use of Primary Substance (First 40 Cases)",
align =rep('c', 101)) %>%
kableExtra::kable_styling(bootstrap_options = c("striped", "hover"),font_size = 8) %>%
kableExtra::scroll_box(width = "100%", height = "375px")
| row | concat_hash_sus_prin | hash_key | ano_bd | edad_ini_sus_prin | sus_principal | edad_al_ing | fech_ing | fech_egres_imp | tipo_de_plan | senda |
|---|---|---|---|---|---|---|---|---|---|---|
| 157,456 | 00012586ea3036b7a18093c396847a87_Pasta Base | 00012586ea3036b7a18093c396847a87 | 2,019 | 27 | Pasta Base | 41.47023 | 2019-05-03 | NA | PG-PAI | Si |
| 53,084 | 00012586ea3036b7a18093c396847a87_Pasta Base | 00012586ea3036b7a18093c396847a87 | 2,014 | 28 | Pasta Base | 36.15606 | 2014-01-08 | 2014-11-03 | PG-PR | No |
| 57,760 | 000ec7b631988f81f3fc07f4de6cb9a9_Pasta Base | 000ec7b631988f81f3fc07f4de6cb9a9 | 2,014 | 29 | Pasta Base | 33.93566 | 2014-05-22 | 2014-07-24 | PG-PAI | Si |
| 52,499 | 000ec7b631988f81f3fc07f4de6cb9a9_Pasta Base | 000ec7b631988f81f3fc07f4de6cb9a9 | 2,014 | 25 | Pasta Base | 33.48939 | 2013-12-10 | 2014-02-28 | PG-PAB | Si |
| 36,044 | 000ec7b631988f81f3fc07f4de6cb9a9_Pasta Base | 000ec7b631988f81f3fc07f4de6cb9a9 | 2,013 | 20 | Pasta Base | 32.58590 | 2013-01-14 | 2013-11-28 | PG-PAI | Si |
| 29,383 | 001022ffb28057b24dd76900bbf1e3de_Pasta Base | 001022ffb28057b24dd76900bbf1e3de | 2,012 | 26 | Pasta Base | 30.25873 | 2012-07-23 | 2012-11-02 | M-PR | Si |
| 16,163 | 001022ffb28057b24dd76900bbf1e3de_Pasta Base | 001022ffb28057b24dd76900bbf1e3de | 2,011 | 25 | Pasta Base | 29.10062 | 2011-05-27 | 2011-10-10 | PG-PAI | Si |
| 162,840 | 0012beab59a3a84eec95c9371f393a06_Pasta Base | 0012beab59a3a84eec95c9371f393a06 | 2,019 | 18 | Pasta Base | 27.76728 | 2019-09-02 | NA | PG-PAB | Si |
| 156,952 | 0012beab59a3a84eec95c9371f393a06_Pasta Base | 0012beab59a3a84eec95c9371f393a06 | 2,019 | 21 | Pasta Base | 27.48802 | 2019-05-23 | 2019-08-29 | PG-PR | Si |
| 92,601 | 001b0ff241cd0d95828b86b4bdab8c19_Alcohol | 001b0ff241cd0d95828b86b4bdab8c19 | 2,016 | 20 | Alcohol | 48.54209 | 2016-01-14 | 2016-05-12 | PG-PR | Si |
| 37,992 | 001b0ff241cd0d95828b86b4bdab8c19_Alcohol | 001b0ff241cd0d95828b86b4bdab8c19 | 2,013 | 18 | Alcohol | 45.74127 | 2013-03-27 | 2013-06-28 | PG-PAI | Si |
| 73,339 | 001ba6dfc8332930f9d9d20a0fa6685b_Pasta Base | 001ba6dfc8332930f9d9d20a0fa6685b | 2,015 | 19 | Pasta Base | 21.60712 | 2015-02-05 | 2015-03-24 | PG-PAI | No |
| 44,192 | 001ba6dfc8332930f9d9d20a0fa6685b_Pasta Base | 001ba6dfc8332930f9d9d20a0fa6685b | 2,013 | 15 | Pasta Base | 20.22177 | 2013-09-17 | 2013-09-30 | PG-PR | Si |
| 36,728 | 001ba6dfc8332930f9d9d20a0fa6685b_Pasta Base | 001ba6dfc8332930f9d9d20a0fa6685b | 2,013 | 15 | Pasta Base | 19.61123 | 2013-02-06 | 2013-03-20 | PG-PR | Si |
| 139,264 | 001fb4d82755ca201c292fe318fef341_Alcohol | 001fb4d82755ca201c292fe318fef341 | 2,018 | 15 | Alcohol | 54.51608 | 2018-06-20 | 2018-10-19 | PG-PR | Si |
| 32,645 | 001fb4d82755ca201c292fe318fef341_Alcohol | 001fb4d82755ca201c292fe318fef341 | 2,013 | 18 | Alcohol | 48.09309 | 2012-01-17 | 2013-08-27 | PG-PAI | Si |
| 35,823 | 00227e8787d1ce564dae87621440d48b_Pasta Base | 00227e8787d1ce564dae87621440d48b | 2,013 | 15 | Pasta Base | 38.22861 | 2013-01-09 | 2013-11-01 | M-PAI | Si |
| 32,399 | 00227e8787d1ce564dae87621440d48b_Pasta Base | 00227e8787d1ce564dae87621440d48b | 2,013 | 30 | Pasta Base | 37.23203 | 2012-01-11 | 2013-01-04 | PG-PAI | Si |
| 4,824 | 00227e8787d1ce564dae87621440d48b_Pasta Base | 00227e8787d1ce564dae87621440d48b | 2,010 | 30 | Pasta Base | 35.52635 | 2010-04-28 | 2010-08-10 | PG-PAI | Si |
| 72,657 | 00237788c4c803c12fecac82105ea4f0_Pasta Base | 00237788c4c803c12fecac82105ea4f0 | 2,015 | 28 | Pasta Base | 32.43806 | 2015-02-02 | 2015-09-23 | PG-PAI | Si |
| 46,208 | 00237788c4c803c12fecac82105ea4f0_Pasta Base | 00237788c4c803c12fecac82105ea4f0 | 2,013 | 29 | Pasta Base | 31.21424 | 2013-11-12 | 2014-02-26 | PG-PAB | Si |
| 139,158 | 002a54a1864024540089017666091fc0_Pasta Base | 002a54a1864024540089017666091fc0 | 2,018 | 32 | Pasta Base | 37.65366 | 2018-06-27 | 2018-11-23 | PG-PR | Si |
| 10,890 | 002a54a1864024540089017666091fc0_Pasta Base | 002a54a1864024540089017666091fc0 | 2,011 | 19 | Pasta Base | 29.67830 | 2010-07-06 | 2011-03-31 | PG-PAB | Si |
| 122,564 | 002b4df919e2b1cc6ff0cdb26b27a514_Alcohol | 002b4df919e2b1cc6ff0cdb26b27a514 | 2,017 | 14 | Alcohol | 34.00684 | 2017-09-25 | 2017-12-15 | PG-PAI | Si |
| 76,859 | 002b4df919e2b1cc6ff0cdb26b27a514_Alcohol | 002b4df919e2b1cc6ff0cdb26b27a514 | 2,015 | 15 | Alcohol | 31.67693 | 2015-05-28 | 2015-11-27 | PG-PAB | Si |
| 34,105 | 002c979e254773f17812d9bff13996dc_Pasta Base | 002c979e254773f17812d9bff13996dc | 2,013 | 22 | Pasta Base | 28.85147 | 2012-10-11 | 2013-01-04 | PG-PAB | Si |
| 4,271 | 002c979e254773f17812d9bff13996dc_Pasta Base | 002c979e254773f17812d9bff13996dc | 2,010 | 19 | Pasta Base | 26.28337 | 2010-03-18 | 2010-05-31 | PG-PAI | Si |
| 158,646 | 00335a6165270de0986718e354c20dcb_Alcohol | 00335a6165270de0986718e354c20dcb | 2,019 | NA | Alcohol | 57.86995 | 2019-06-19 | 2019-07-17 | PG-PR | Si |
| 156,853 | 00335a6165270de0986718e354c20dcb_Alcohol | 00335a6165270de0986718e354c20dcb | 2,019 | 15 | Alcohol | 57.76865 | 2019-05-13 | 2019-06-14 | PG-PAI | Si |
| 135,632 | 00335a6165270de0986718e354c20dcb_Alcohol | 00335a6165270de0986718e354c20dcb | 2,018 | 8 | Alcohol | 56.61875 | 2018-03-19 | 2018-11-08 | PG-PAI | Si |
| 43,087 | 00335a6165270de0986718e354c20dcb_Alcohol | 00335a6165270de0986718e354c20dcb | 2,013 | 15 | Alcohol | 52.02190 | 2013-08-13 | 2014-05-20 | PG-PAI | Si |
| 158,654 | 003c0a2d84d8b86df55485958c108ec3_Pasta Base | 003c0a2d84d8b86df55485958c108ec3 | 2,019 | 32 | Pasta Base | 37.37988 | 2019-06-03 | NA | PG-PAI | Si |
| 153,026 | 003c0a2d84d8b86df55485958c108ec3_Pasta Base | 003c0a2d84d8b86df55485958c108ec3 | 2,019 | NA | Pasta Base | 36.99658 | 2019-01-14 | 2019-03-29 | PG-PAI | Si |
| 38,349 | 0043106cf035f0191d66ee23e6c7acee_Pasta Base | 0043106cf035f0191d66ee23e6c7acee | 2,013 | 32 | Pasta Base | 46.91034 | 2013-03-21 | 2013-09-04 | PG-PAI | Si |
| 30,343 | 0043106cf035f0191d66ee23e6c7acee_Pasta Base | 0043106cf035f0191d66ee23e6c7acee | 2,012 | 42 | Pasta Base | 46.46407 | 2012-10-09 | 2013-01-15 | PG-PAI | Si |
| 119,011 | 004829ae26e6bf4fc4766f1f9863554a_Pasta Base | 004829ae26e6bf4fc4766f1f9863554a | 2,017 | 31 | Pasta Base | 38.83915 | 2017-05-10 | 2018-02-01 | PG-PAI | Si |
| 111,065 | 004829ae26e6bf4fc4766f1f9863554a_Pasta Base | 004829ae26e6bf4fc4766f1f9863554a | 2,017 | 33 | Pasta Base | 38.41205 | 2016-12-05 | 2017-01-13 | PG-PR | Si |
| 97,851 | 004d135beff90a24f4be7f85f443a405_Alcohol | 004d135beff90a24f4be7f85f443a405 | 2,016 | 15 | Alcohol | 58.25873 | 2015-12-29 | 2016-08-11 | PG-PAI | Si |
| 70,113 | 004d135beff90a24f4be7f85f443a405_Alcohol | 004d135beff90a24f4be7f85f443a405 | 2,015 | 14 | Alcohol | 57.08693 | 2014-10-27 | 2015-04-24 | PG-PAI | Si |
| 60,430 | 004d135beff90a24f4be7f85f443a405_Alcohol | 004d135beff90a24f4be7f85f443a405 | 2,014 | 14 | Alcohol | 56.76386 | 2014-07-01 | 2014-10-27 | PG-PR | Si |
#edad_ini_sus_prin_summ[,"p90_diff_p25_p50"]
#edad_ini_sus_prin_summ[,"p90_diff_p75_p50"]
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_______________________
edad_ini_cons_sus_prin_up_75<-
as.character(CONS_C1_df_dup_MAY_2020_prev %>%
dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
dplyr::filter(concat_hash_sus_prin %in% as.character(as.vector(unlist(as.data.table(unlist(CONS_C1_df_dup_MAY_2020_prev_edad_ini_sus_prin[,"concat_hash_sus_prin"])))))) %>%
dplyr::group_by(concat_hash_sus_prin) %>%
dplyr::mutate(range=abs(max(edad_ini_sus_prin,na.rm=T)-abs(min(edad_ini_sus_prin,na.rm=T)))) %>%
dplyr::filter(range>as.numeric(summ_edad_ini_cons_sus_prin_por_concat_hash_sus_prin[,"p75_ranges"]))%>%
#dplyr::select(hash_key, range)
distinct(concat_hash_sus_prin)%>%
unlist())
edad_ini_cons_sus_prin_lo_75<-
CONS_C1_df_dup_MAY_2020_prev %>%
dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
dplyr::filter(concat_hash_sus_prin %in% as.character(as.vector(unlist(as.data.table(unlist(CONS_C1_df_dup_MAY_2020_prev_edad_ini_sus_prin[,"concat_hash_sus_prin"])))))) %>%
dplyr::group_by(concat_hash_sus_prin) %>%
dplyr::mutate(mean_edad_ini_sus_prin_lo75=round(mean(edad_ini_sus_prin,na.rm=T),0),range=abs(max(edad_ini_sus_prin,na.rm=T)-abs(min(edad_ini_sus_prin,na.rm=T)))) %>%
dplyr::ungroup()%>%
dplyr::filter(range<=as.numeric(summ_edad_ini_cons_sus_prin_por_concat_hash_sus_prin[,"p75_ranges"]))%>%
dplyr::select(concat_hash_sus_prin,mean_edad_ini_sus_prin_lo75)%>%
dplyr::distinct(concat_hash_sus_prin,.keep_all=T)
invisible(
CONS_C1_df_dup_MAY_2020_prev %>%
dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
dplyr::filter(concat_hash_sus_prin %in% as.character(unlist(edad_ini_cons_sus_prin_up_75)))
)
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_______________________
###PARA HACER LA CONVERSION en los mayores al 75 (edad_ini_cons_sus_prin_up_75)
#_______________________
#Ver cada registro con un determinado hash y sustancia principal, pero con 2 casos de la misma base de datos anual con distina edad de inicio de consumo de esa sus principal, para sacar el promedio de eso
#_#_#_#_#_#_
#1. distinta edad, bd tratamiento más reciente- Dejar la fecha del tratamiento más reciente
#proviene de más de una base de datos anual
CONS_C1_df_dup_MAY_2020_prev %>%
dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
dplyr::filter(concat_hash_sus_prin %in% edad_ini_cons_sus_prin_up_75) %>%
dplyr::group_by(concat_hash_sus_prin) %>%
dplyr::add_tally(name="n_edad_ini_cons_sus_prin_sus_prin_concat") %>%
dplyr::mutate(n_dis=n_distinct(ano_bd)) %>%
dplyr::ungroup() %>%
dplyr::filter(n_dis>1) %>%
dplyr::arrange(concat_hash_sus_prin,desc(ano_bd)) %>%
dplyr::filter(!is.na(edad_ini_sus_prin))%>% #8138
dplyr::select(row, hash_key, concat_hash_sus_prin,ano_bd, edad_ini_cons, edad_ini_sus_prin,sus_principal,n_edad_ini_cons_sus_prin_sus_prin_concat)%>%
dplyr::group_by(concat_hash_sus_prin) %>%
dplyr::mutate(max_ano=max(ano_bd))%>%
dplyr::ungroup()%>%
#dplyr::slice(which.max(ano_bd)) %>% #MAY 2020, dejé como un procedimiento de APR 2020
dplyr::filter(max_ano==ano_bd) %>%
dplyr::ungroup() %>%
assign("hash_edadinisusprin_most_recent_db",., envir = .GlobalEnv) %>%#APR 2020= casos // #MAY 2020= 8179 (2,824 usuarios)
dplyr::group_by(concat_hash_sus_prin)%>%
distinct(edad_ini_sus_prin,.keep_all=T)%>%
dplyr::mutate(n_dis=n_distinct(edad_ini_sus_prin)) %>%
dplyr::filter(n_dis>1)%>% #
dplyr::mutate(edad_ini_sus_prin_=paste0("edad_ini_sus_prin_",row_number()))%>%
tidyr::pivot_wider(id_cols =concat_hash_sus_prin,names_from = edad_ini_sus_prin_, values_from = edad_ini_sus_prin,names_repair="minimal",values_fill = list(n = ""))%>%
dplyr::rename("edad_ini_sus_prin"="edad_ini_sus_prin_1")%>%
assign("hash_edad_ini_cons_sus_prin_most_recent_db_more_one_value_1b",., envir = .GlobalEnv) #xxxxx casos de xxx HASHs
hash_edad_ini_cons_sus_prin_most_recent_db_1a <- hash_edadinisusprin_most_recent_db%>% #>>>>
group_by(concat_hash_sus_prin)%>%
distinct(edad_ini_sus_prin,.keep_all=T)%>%
dplyr::mutate(n_dis=n_distinct(edad_ini_sus_prin)) %>%
dplyr::filter(n_dis==1) %>%
ungroup()
#hash_edad_ini_cons_sus_prin_most_recent_db_more_one_value_1b %>% separate(concat_hash_sus_prin,sep="_",into=c("hash_key","sus_prin"))%>% group_by(hash_key)
#_#_#_#_#_#_
#_#_#_#_#_#_
#2a. distinta edad, misma bd tratamiento, más de 2 casos- Dejar la fecha del tratamiento más frecuente
#misma edad base de datos por año, pero más de 2 casos ---> valor + frecuente
#TIENE 0 CASOS...
CONS_C1_df_dup_MAY_2020_prev %>%
dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
dplyr::filter(concat_hash_sus_prin %in% edad_ini_cons_sus_prin_up_75) %>%
dplyr::group_by(concat_hash_sus_prin) %>%
dplyr::add_tally() %>%
dplyr::mutate(n_dis=n_distinct(ano_bd)) %>%
dplyr::ungroup() %>%
dplyr::filter(n_dis==1,n>2) %>% #más de 2 hash, pero todos dentro de la misma bd del mismo año
dplyr::select(-n) %>%
dplyr::arrange(concat_hash_sus_prin,desc(ano_bd)) %>%
dplyr::filter(!is.na(edad_ini_sus_prin))%>%
dplyr::mutate(concat_hash_susini_edadinisusprin=paste0(concat_hash_sus_prin,"_",edad_ini_sus_prin)) %>%
dplyr::group_by(concat_hash_susini_edadinisusprin) %>%
dplyr::add_tally() %>% #agrego un nuevo n, para contar los distintos nacionalidades
dplyr::select(row, concat_hash_susini_edadinisusprin,concat_hash_sus_prin, ano_bd, edad_ini_sus_prin, sus_principal,n)%>%
dplyr::ungroup() %>%
dplyr::group_by(concat_hash_sus_prin) %>%
#dplyr::slice(which.max(n)) %>% #me quedo con la concatenación por hash key que más se repite.
dplyr::top_n(1,n)%>%
#aquí ya filtramos aquellos casos que más se repiten por cada combinación de usuario y sustancia principal
dplyr::rename("cases_by_concat_hash_edad_ini_cons"="n")%>%
dplyr::ungroup() %>%
assign("hash_edadinisusprin_most_freq_value",., envir = .GlobalEnv)%>%
dplyr::select(-cases_by_concat_hash_edad_ini_cons)%>%
group_by(concat_hash_sus_prin)%>%
add_tally()%>%
dplyr::filter(n>1)%>% #99 casos
dplyr::mutate(edad_ini_sus_prin_=paste0("edad_ini_sus_prin_",row_number()))%>%
tidyr::pivot_wider(id_cols =concat_hash_sus_prin,names_from = edad_ini_sus_prin_, values_from = edad_ini_sus_prin,names_repair="minimal",values_fill = list(n = ""))%>%
dplyr::rename("edad_ini_sus_prin"="edad_ini_sus_prin_1")%>%
assign("hash_edad_ini_cons_sus_prin_most_freq_value_more_one_value_2a2",., envir = .GlobalEnv) #xxxxx casos de xxx HASHs
#seleccionar los casos en que en la misma base de datos hay sólo un caso que es mayor
hash_edad_ini_cons_sus_prin_most_freq_value_2a1 <- hash_edadinisusprin_most_freq_value%>%
dplyr::select(-cases_by_concat_hash_edad_ini_cons)%>%
group_by(concat_hash_sus_prin)%>%
add_tally()%>%
dplyr::filter(n==1) %>%
dplyr::select(-n, -row, -ano_bd)
#%>% dplyr::filter(concat_hash_sus_prin=="18c831d99a158c8dffda2acf1bd44076_Pasta Base")
#hash_edad_ini_cons_sus_prin_most_recent_db_more_one_value_1b %>% separate(concat_hash_sus_prin,sep="_",into=c("hash_key","sus_prin"))%>% group_by(hash_key)
invisible(
hash_edadinisusprin_most_freq_value %>%
group_by(concat_hash_sus_prin)%>%
add_tally()%>%
dplyr::filter(n>1)%>% dplyr::filter(concat_hash_sus_prin=="3298142344cac01bc0eb330020572a55_Alcohol")
)
#_#_#_#_#_#_
#_#_#_#_#_#_
#2b. distinta edad, misma bd tratamiento, más de 2 casos- Dejar la fecha del tratamiento más frecuente. Casos con fecha de trat + reciente
CONS_C1_df_dup_MAY_2020_prev %>%
dplyr::filter(hash_key %in% as.character(unlist(hash_edad_ini_cons_most_recent_db_more_one_value_1b["hash_key"])))%>%
dplyr::group_by(hash_key,sus_principal,edad_ini_sus_prin) %>%
dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
dplyr::add_tally(name="n_por_hash_edad_ini_conssusprin") %>%
dplyr::ungroup()%>%
dplyr::filter(!is.na(edad_ini_sus_prin))%>%
dplyr::group_by(concat_hash_sus_prin) %>%
dplyr::add_tally(name="n_por_hash") %>%
dplyr::arrange(desc(n_por_hash_edad_ini_conssusprin))%>%
# dplyr::ungroup()%>%
dplyr::top_n(1,n_por_hash_edad_ini_conssusprin)%>%
dplyr::arrange(desc(n_por_hash),concat_hash_sus_prin)%>%
dplyr::distinct(concat_hash_sus_prin,edad_ini_sus_prin,.keep_all=T)%>%
dplyr::select(row, hash_key, ano_bd, concat_hash_sus_prin,edad_ini_cons,edad_ini_sus_prin, n_por_hash,n_por_hash_edad_ini_conssusprin) %>%
dplyr::group_by(concat_hash_sus_prin)%>%
dplyr::add_tally(name="n_por_hash_edad_ini_conssusprin") %>%
assign("hash_edad_ini_conssusprin_most_recent_db_more_one_value_mfv_2b",., envir = .GlobalEnv)
hash_edad_ini_conssusprin_most_recent_db_more_one_value_mfv_2b %>%
dplyr::filter(n_por_hash_edad_ini_conssusprin>1)%>% #45
dplyr::mutate(edad_ini_sus_prin_=paste0("edad_ini_sus_prin_",row_number()))%>%
tidyr::pivot_wider(id_cols =concat_hash_sus_prin,names_from = edad_ini_sus_prin_, values_from = edad_ini_sus_prin,names_repair="minimal",values_fill = list(n = ""))%>%
dplyr::rename("edad_ini_sus_prin"="edad_ini_sus_prin_1")%>%
assign("hash_edad_ini_conssusprin_most_recent_db_more_one_value__mfv_more_one_value_2b2",., envir = .GlobalEnv)
hash_edad_ini_conssusprin_most_recent_db_more_one_value_mfv_2b1<-
hash_edad_ini_conssusprin_most_recent_db_more_one_value_mfv_2b%>%
dplyr::filter(n_por_hash_edad_ini_conssusprin==1)%>%
dplyr::select(concat_hash_sus_prin,edad_ini_sus_prin)
#hash_edad_ini_cons_sus_prin_most_recent_db_more_one_value_1b %>% separate(concat_hash_sus_prin,sep="_",into=c("hash_key","sus_prin"))%>% group_by(hash_key)
#_#_#_#_#_#_
#_#_#_#_#_#_
# 3. Sólo 2 casos . fechas de nacimiento, en la misma base de datos anual.
#misma edad base de datos por año, pero sólo 2 casos ---> se obtiene la media
#Actualizar a mayo
CONS_C1_df_dup_MAY_2020_prev %>%
dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
dplyr::filter(concat_hash_sus_prin %in% edad_ini_cons_sus_prin_up_75) %>%
dplyr::group_by(concat_hash_sus_prin) %>%
dplyr::add_tally() %>%
dplyr::mutate(n_dis=n_distinct(ano_bd)) %>%
dplyr::ungroup() %>%
dplyr::filter(n_dis==1,n==2) %>% #casos en que hay que recurrir a otras variables
dplyr::arrange(concat_hash_sus_prin,desc(ano_bd)) %>%
dplyr::filter(!is.na(edad_ini_sus_prin))%>%
dplyr::select(row,concat_hash_sus_prin, hash_key, ano_bd, edad_ini_sus_prin, sus_principal)%>%
#dejarla como segunda nacionalidad
dplyr::group_by(concat_hash_sus_prin) %>%
dplyr::mutate(rn=row_number()) %>%
as.data.frame() %>%
reshape(idvar = "concat_hash_sus_prin", timevar = "rn", direction = "wide") %>%
dplyr::mutate(mean_edad_ini_sus_prin=round(rowMeans(cbind(edad_ini_sus_prin.1,edad_ini_sus_prin.2), na.rm=T),0)) %>%
dplyr::select(concat_hash_sus_prin,mean_edad_ini_sus_prin) %>%
dplyr::arrange(concat_hash_sus_prin)%>%
assign("edad_ini_conssusprin_misma_bd_2_casos_3",., envir = .GlobalEnv)
#hash_edad_ini_cons_sus_prin_most_recent_db_more_one_value_1b %>% separate(concat_hash_sus_prin,sep="_",into=c("hash_key","sus_prin"))%>% group_by(hash_key)
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% edad_ini_cons_up_75) %>% group_by(hash_key)%>% print()
#CONS_C1_df_dup_MAY_2020_prev0 %>%
#dplyr::filter(hash_key %in% as.character(unlist(hash_sus_ini_most_freq_value_more_one_value_2a2[,"hash_key"]))) %>% group_by(hash_key)%>% print()
#CONS_C1_df_dup_MAY_2020_prev0 %>%
#dplyr::filter(hash_key %in% as.character(unlist(hash_edad_ini_cons_most_recent_db_1a[,"hash_key"]))) %>% group_by(hash_key)%>% print()
#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% as.character(unlist(hash_edad_ini_cons_most_recent_db_more_one_value_1b[,"hash_key"]))) %>% group_by(hash_key)%>% print()
#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% as.character(unlist(hash_edad_ini_cons_most_recent_db_more_one_value_mfv_2b1[,"hash_key"]))) %>% group_by(hash_key)%>% print()
#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% as.character(unlist(hash_edad_ini_cons_most_recent_db_more_one_value__mfv_more_one_value_2b2[,"hash_key"]))) %>% group_by(hash_key)%>% print()
#CONS_C1_df_dup_MAY_2020_prev0 %>% dplyr::filter(hash_key %in% as.character(unlist(hash_edad_ini_cons_most_recent_db_more_one_value__mfv_more_one_value_2b2[,"hash_key"]))) %>% group_by(hash_key)%>% print()
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
invisible(c("Manual Review"))
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#
#hash_edad_ini_cons_sus_prin_most_recent_db_1a
#hash_edad_ini_cons_sus_prin_most_recent_db_more_one_value_1b
#hash_edad_ini_cons_sus_prin_most_freq_value_2a1
#hash_edad_ini_cons_sus_prin_most_freq_value_more_one_value_2a2
#hash_edad_ini_cons_most_recent_db_more_one_value_mfv_2b1
#hash_edad_ini_cons_most_recent_db_more_one_value__mfv_more_one_value_2b2
#casos a descartar y a investigar a futuro
casos_fecha_inicio_cons_sus_prin_empates_3 <-
CONS_C1_df_dup_MAY_2020_prev %>%
dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
dplyr::filter(concat_hash_sus_prin %in% c(as.character(unlist(edad_ini_conssusprin_misma_bd_2_casos_3[,"concat_hash_sus_prin"])),
as.character(unlist(hash_edad_ini_cons_sus_prin_most_freq_value_more_one_value_2a2[,"concat_hash_sus_prin"])),
as.character(unlist(hash_edad_ini_conssusprin_most_recent_db_more_one_value__mfv_more_one_value_2b2[,"concat_hash_sus_prin"]))))%>%
dplyr::arrange(concat_hash_sus_prin)%>%
dplyr::filter(!is.na(edad_ini_sus_prin))%>%
group_by(concat_hash_sus_prin) %>%
dplyr::select(concat_hash_sus_prin, ano_bd, edad_ini_sus_prin)%>%
summarise(mean_edad_ini_cons=round(mean(edad_ini_sus_prin,na.rm=T),0))
`summarise()` ungrouping output (override with `.groups` argument)
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#hash_edad_ini_cons_sus_prin_most_recent_db_1a
#hash_edad_ini_cons_sus_prin_most_recent_db_more_one_value_1b
#hash_edad_ini_cons_sus_prin_most_freq_value_2a1
#hash_edad_ini_cons_sus_prin_most_freq_value_more_one_value_2a2
#hash_edad_ini_cons_most_recent_db_more_one_value_mfv_2b1
#hash_edad_ini_cons_most_recent_db_more_one_value__mfv_more_one_value_2b2
#edad_ini_conssusprin_misma_bd_2_casos_3
CONS_C1_df_dup_MAY_2020_prev %>%
#janitor::tabyl(sexo_2) %>%
dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
#0b
dplyr::mutate(obs=case_when(concat_hash_sus_prin %in% as.character(as.vector(unlist(as.data.table(unlist(edad_ini_cons_sus_prin_lo_75[,1])))))~glue::glue("{obs};3.02.0b.HASH w/ more than one distinct Age of Onset of Drug Use Prim Subs. Minor differences within users,replaced with mean"),TRUE~obs))%>%
dplyr::left_join(edad_ini_cons_sus_prin_lo_75,by="concat_hash_sus_prin", suffix=c("","_lo_75"))%>%
dplyr::mutate(edad_ini_sus_prin= ifelse(!is.na(mean_edad_ini_sus_prin_lo75), mean_edad_ini_sus_prin_lo75, edad_ini_sus_prin)) %>%
dplyr::select(-mean_edad_ini_sus_prin_lo75) %>%
#1a
dplyr::mutate(obs=case_when(concat_hash_sus_prin %in% as.character(as.vector(unlist(as.data.table(unlist(hash_edad_ini_cons_sus_prin_most_recent_db_1a)))))~glue::glue("{obs};3.02.1a.HASH w/ more than one distinct Age of Onset of Drug Use Prim Subs. Recent db"),TRUE~obs))%>%
dplyr::left_join(hash_edad_ini_cons_sus_prin_most_recent_db_1a, by="concat_hash_sus_prin",suffix=c("","_edadinicons_susprin_recent_db")) %>%
dplyr::mutate(edad_ini_sus_prin= ifelse(!is.na(edad_ini_sus_prin_edadinicons_susprin_recent_db), edad_ini_sus_prin_edadinicons_susprin_recent_db, edad_ini_sus_prin)) %>%
dplyr::select(-ends_with("_edadinicons_susprin_recent_db")) %>%
#2a1
dplyr::mutate(obs=case_when(concat_hash_sus_prin %in% as.character(as.vector(unlist(as.data.table(unlist(hash_edad_ini_cons_sus_prin_most_freq_value_2a1)))))~glue::glue("{obs};3.02.2a1.HASH w/ more than one distinct Age of Onset of Drug Use Prim Subs. Most frequent value"),TRUE~obs))%>%
dplyr::left_join(hash_edad_ini_cons_sus_prin_most_freq_value_2a1, by="concat_hash_sus_prin",suffix=c("","_edadinicons_susprin_mfv")) %>%
dplyr::mutate(edad_ini_sus_prin= ifelse(!is.na(edad_ini_sus_prin_edadinicons_susprin_mfv), edad_ini_sus_prin_edadinicons_susprin_mfv, edad_ini_sus_prin)) %>%
dplyr::select(-ends_with("_edadinicons_susprin_mfv")) %>%
#2b1
dplyr::mutate(obs=case_when(concat_hash_sus_prin %in% as.character(as.vector(unlist(as.data.table(unlist(hash_edad_ini_conssusprin_most_recent_db_more_one_value_mfv_2b1)))))~glue::glue("{obs};3.02.2b1.HASH w/ more than one distinct Age of Onset of Drug Use Prim Subs.>1 recent DB, mfv"),TRUE~obs))%>%
dplyr::left_join(hash_edad_ini_conssusprin_most_recent_db_more_one_value_mfv_2b1, by="concat_hash_sus_prin",suffix=c("","_edadinicons_susprin_recent_db_mfv")) %>%
dplyr::mutate(edad_ini_sus_prin= ifelse(!is.na(edad_ini_sus_prin_edadinicons_susprin_recent_db_mfv), edad_ini_sus_prin_edadinicons_susprin_recent_db_mfv, edad_ini_sus_prin)) %>%
dplyr::select(-ends_with("_edadinicons_susprin_recent_db_mfv")) %>%
# dplyr::filter(!is.na(mean_edad_ini_cons))%>% dplyr::select(hash_key,edad_ini_cons,mean_edad_ini_cons)%>%#solo una prueba
#3b
dplyr::mutate(obs=case_when(concat_hash_sus_prin %in% as.character(as.vector(unlist(as.data.table(unlist(casos_fecha_inicio_cons_sus_prin_empates_3)))))~glue::glue("{obs};3.02.3.HASH w/ more than one distinct Age of Onset of Drug Use Prim Subs.Other"),TRUE~obs))%>%
dplyr::left_join(casos_fecha_inicio_cons_sus_prin_empates_3, by="concat_hash_sus_prin",suffix=c("","_edadinicons_susprin_misma_bd_2_casos_3")) %>%
dplyr::mutate(edad_ini_sus_prin= ifelse(!is.na(mean_edad_ini_cons), mean_edad_ini_cons, edad_ini_sus_prin)) %>%
dplyr::select(-ends_with("_edadinicons_misma_bd_2_casos"),mean_edad_ini_cons) %>%
assign("CONS_C1_df_dup_MAY_2020_prev_2",., envir = .GlobalEnv)
descartado=0
if(descartado==1) {
CONS_C1_df_dup_MAY_2020_prev %>%
#janitor::tabyl(sexo_2) %>%
dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
print()
}
#casos_con_fechas_invalidas_por_fecha_inicio_cons_sus_prin_2_casos_3a %>% group_by(concat_hash_sus_prin) %>% add_tally()%>% View()
invisible(
CONS_C1_df_dup_MAY_2020_prev_2 %>% dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>% group_by(concat_hash_sus_prin) %>% dplyr::mutate(edad_ini_cons_sus_prin_por_hash=n_distinct(edad_ini_sus_prin)) %>% ungroup() %>% dplyr::filter(edad_ini_cons_sus_prin_por_hash>1) %>% nrow() %>% formatC(format="f", big.mark=",", digits=0)
)
#89 3.02.0b.
#CONS_C1_df_dup_MAY_2020_prev %>% group_by(hash_key) %>% dplyr::mutate(edad_ini_cons_por_hash=n_distinct(edad_ini_cons)) %>% ungroup() %>% dplyr::filter(edad_ini_cons_por_hash>1) %>% nrow() %>% formatC(, format="f", big.mark=",", digits=0)
#CONS_C1_df_dup_MAY_2020_prev_2 %>% dplyr::group_by(obs) %>% summarise(n=n()) %>% dplyr::filter(n,grepl('3.02.', obs)) %>% View()
#CONS_C1_df_dup_MAY_2020_prev_2 %>% dplyr::filter(grepl('3.02.0b', obs)) %>% group_by(hash_key)
We used a neural network model to obtain a definitive value of the 24 users that had two different sexes entered into the system.
suppressPackageStartupMessages(library(radiant))
#genero la base de datos de entrenamiento.
CONS_C1_df_dup_FEB_2020_prev24_train_nn<- CONS_C1_df_dup_FEB_2020_prev24 %>%
dplyr::filter(!hash_key %in% as.character(unlist(sexo_casos_pendientes_3["hash_key"])))
#_#_#_#_#_#_#_#_#_#_#_#_#_
#First training model
#_#_#_#_#_#_#_#_#_#_#_#_#_
#corro el modelo con la base de entrenamiento
neuralnet_sex_train0<-
nn(
CONS_C1_df_dup_FEB_2020_prev24_train_nn,
"sexo_2", #The response variable in the model
c("estatus_ocupacional","edad", "estado_conyugal_2","tenencia_de_la_vivienda","numero_de_hijos","escolaridad"),
lev = "Mujer", #lev The level in the response variable defined as _success_
seed = 1245 # seed Random seed to use as the starting point
)
#hago la validación cruzada
#The best way to determine the optimal values for Size and Decays is to use Cross-Validation.
#In radiant, you can use the cv.nn function for this purpose.
#cv.nn: Cross-validation for a Neural Network
#https://radiant-rstats.github.io/radiant.model/reference/cv.nn.html
#K= número de cv pasa para usar
#repeats= cv repetido
#decay= decaimiento en parámetros
#size=número de nodos en la capa oculta
#seed= semilla aleatoria como inicio
#trace= imprimir progreso
#fun= función para usar evaluación del modelo (auc para clasificación, RMSE para regresión; también está Rsq)
#https://rdrr.io/cran/radiant.model/man/auc.html
#https://rdrr.io/cran/radiant.model/man/RMSE.html
#https://rdrr.io/cran/radiant.model/man/profit.html
#_#_#_#_#_#_#_#_#_#_#_#_#_
#Cross-validation
#_#_#_#_#_#_#_#_#_#_#_#_#_
result_sex_all_cv<- cv.nn(neuralnet_sex_train0, K= 10, decay = seq(0, 1, .5), size = 1:5, fun = auc, trace=T, seed=1245)
Working on size 1 decay 0
Working on size 1 decay 0.5
Working on size 1 decay 1
Working on size 2 decay 0
Working on size 2 decay 0.5
Working on size 2 decay 1
Working on size 3 decay 0
Working on size 3 decay 0.5
Working on size 3 decay 1
Working on size 4 decay 0
Working on size 4 decay 0.5
Working on size 4 decay 1
Working on size 5 decay 0
Working on size 5 decay 0.5
Working on size 5 decay 1
nn_sex_par<- result_sex_all_cv[order(-result_sex_all_cv$"auc (mean)"),]
#selecciono los parámetros que permitan hacer la mejor estimación
#_#_#_#_#_#_#_#_#_#_#_#_#_
#Final Model
#_#_#_#_#_#_#_#_#_#_#_#_#_
neuralnet_sex<- nn(
CONS_C1_df_dup_FEB_2020_prev24_train_nn[c("sexo_2",
"estatus_ocupacional",
"edad",
"estado_conyugal_2",
"tenencia_de_la_vivienda",
"numero_de_hijos",
"escolaridad")],
"sexo_2", #The response variable in the model
c("estatus_ocupacional",
"edad",
"estado_conyugal_2",
"tenencia_de_la_vivienda",
"numero_de_hijos",
"escolaridad"),
lev = "Mujer", #lev The level in the response variable defined as _success_
size = nn_sex_par[1,"size"],
decay = nn_sex_par[1,"decay"],
seed = 1245 # seed Random seed to use as the starting point
)
#_#_#_#_#_#_#_#_#_#_#_#_#_
#Prediction
#_#_#_#_#_#_#_#_#_#_#_#_#_
CONS_C1_df_dup_FEB_2020_prev24_test_nn<- CONS_C1_df_dup_FEB_2020_prev24 %>%
dplyr::filter(hash_key %in% as.character(unlist(sexo_casos_pendientes_3["hash_key"])))%>%
dplyr::select(row,hash_key,sexo_2,estatus_ocupacional, edad,estado_conyugal_2, tenencia_de_la_vivienda, numero_de_hijos, escolaridad)
#predict(result, pred_cmd = "carat = 1:3")
#https://radiant-rstats.github.io/radiant.model/reference/predict.nn.html
#pred_data= Provide the dataframe to generate predictions (e.g., diamonds). The dataset must contain all columns used in the estimation
#pred_cmd= Generate predictions using a command. For example, `pclass = levels(pclass)` would produce predictions
#for the different levels of factor `pclass`. To add another variable, create a vector of prediction strings,
#(e.g., c('pclass = levels(pclass)', 'age = seq(0,100,20)')
#dec= Number of decimals to show
#envir= Environment to extract data from
result_sex_all_cv_pred<- predict(neuralnet_sex, pred_data = CONS_C1_df_dup_FEB_2020_prev24_test_nn)
The model was trained using the rest of the dataset with valid attributes on the variable sex (n= 117,340). We generated a total of 10 cross-validations, with alternatives of 1 to 5 layers, and a threshold of 0, .5 and 1 in every model (10x5x3). The model that obtained the highest area under the curve (AUC (mean)= 0.78) had a size of 5 layers, and a threshold for weights of 1 (L2 penalty). THe following figure shows the neural network structure Due to the great amount of categories, we generated a garson plot of importance of variables into the weight.
#sexo_casos_pendientes_3
mar <- par(mar =c(5.1, 4.1, 4.1, 2.1),mgp=c(3, 1, 0))
on.exit(par(mar = mar$mar))
plot(neuralnet_sex, plots = "net", custom=T,size = 9, pad_x = 0.8, nrobs = -1,cex_val = 3)
Figure 4a. Neural Network of Sex
#sexo_casos_pendientes_3
mar <- par(mar = c(0, 0, 0, 0))
on.exit(par(mar = mar$mar))
plot(neuralnet_sex, plots = "olden", custom=T,size = 9, pad_x = 0.8, nrobs = -1,cex_val = 3)+
ggtitle("")
Figure 4b. Garson Plot of Variable Importance
The plot presented showed the product of the weights through the model from each predictor to the output and the target category of classifying a user as a women. As seen, the number of kids and an inactive employment status had an important and positive contribution to the weights of the model. In contrast, the condition of a household that is divested, or the condition of widowhood, had a small contribution. Lastly, the condition of employment contributed but in a negative direction into the model, just as the fact that the interviewed did not answer the question about housing tenure,
#sexo_casos_pendientes_3
sex_replace_neuralnet <-
result_sex_all_cv_pred%>%
cbind(CONS_C1_df_dup_FEB_2020_prev24_test_nn[c("row","hash_key","sexo_2")])%>%
dplyr::select(row, hash_key, everything())%>%
as.data.frame()%>%
dplyr::mutate(sexo_2_corr= if_else(Prediction>=.5,"Mujer","Hombre",NA_character_))%>%
dplyr::arrange(hash_key)%>%
dplyr::group_by(hash_key)%>%
dplyr::mutate(sexo_2_corr2=lag(sexo_2_corr))%>%
dplyr::mutate(sexo_2_2=lag(sexo_2))%>%
dplyr::mutate(sexo_2_final=ifelse(sexo_2_2==sexo_2,sexo_2,NA_character_))%>%
dplyr::filter(!is.na(sexo_2_corr2))%>%
dplyr::mutate(Predicted_sex=ifelse(sexo_2_corr==sexo_2_corr2,sexo_2_corr,NA_character_))%>%
dplyr::filter(!is.na(Predicted_sex))%>%
dplyr::rename("Prediction_sex"="Prediction")
invisible(
CONS_C1_df_dup_MAY_2020_prev0 %>%
dplyr::filter(hash_key %in% as.character(as.vector(unlist(as.data.table(unlist(edad_ini_cons_misma_bd_2_casos_3[,"hash_key"])))))) %>%
dplyr::filter(hash_key %in% c("014168e096787bf7e4c6951a3b4c27de","0110bb39c8fffafe0bbbe1fd17f51e71"))%>%
dplyr::select(hash_key,ano_bd,edad_ini_cons,obs)
)
#21
#Misma bd, 2 casos
CONS_C1_df_dup_MAY_2020_prev_2%>%
dplyr::left_join(sex_replace_neuralnet, by="hash_key",suffix=c("","_sexo_2_neuralnet")) %>%
dplyr::mutate(obs=case_when(!is.na(Predicted_sex)~glue::glue("{obs};3.03.1.XX.HASH w/ more than one distinct Sex.2 cases, same yearly dataset.Neural network imputation"),TRUE~obs))%>%
dplyr::mutate(sexo_2= ifelse(!is.na(Predicted_sex), as.character(sexo_2), as.character(sexo_2))) %>%
dplyr::select(-ends_with("_sexo_2_neuralnet"),-sexo_2_corr,-sexo_2_corr2,-sexo_2_2,-sexo_2_final) %>%
dplyr::mutate(sexo_2=as.factor(sexo_2))%>%
dplyr::select(-mean_edad_ini_cons,-n_edad_ini_cons_sus_prin_sus_prin_concat, -max_ano, -n_dis, -concat_hash_susini_edadinisusprin,-edad_al_ing_n_as,-edad_al_ing_less15,-Prediction_sex,-Predicted_sex)%>%
assign("CONS_C1_df_dup_MAY_2020_prev_3",., envir = .GlobalEnv)
#janitor::tabyl(sexo_2)
#CONS_C1_df_dup_FEB_2020_prev25 %>% group_by(hash_key) %>% dplyr::mutate(sexo_2_por_hash=n_distinct(sexo_2)) %>% ungroup() %>% dplyr::filter(sexo_2_por_hash>1) %>% nrow() %>% formatC(, format="f", big.mark=",", digits=0)
#CONS_C1_df_dup_MAY_2020_prev_3 %>% dplyr::filter(grepl('3.03.1.', obs)) %>% dplyr::group_by(hash_key)
We replaced the value in sex with the imputed one in cases with two entries with different sexes. The imputed cases were restricted to users that both cases were imputed with the same sex (n=20).
We used a neural network model to obtain valid ages of onset of drug use for 572 users that had more than one age of onset of drug use.
#casos_fecha_inicio_cons_sus_prin_empates_3
#preparo la base de datos con los datos que me interesan
C1_edad_ini_cons_sus_not_ties<-
CONS_C1_df_dup_MAY_2020_prev_3 %>%
dplyr::filter(!hash_key %in% c(as.character(unlist(casos_fecha_inicio_cons_sus_empates_3["hash_key"]))))%>%
dplyr::as_tibble()%>%
janitor::clean_names()%>%
dplyr::select(row, hash_key, edad_ini_cons, sus_ini, sus_principal,edad_al_ing,edad,ano_bd,edad_ini_sus_prin)%>%
# sample_frac(.05)%>%
na.omit()%>%
dplyr::mutate(rn=row_number())
#_#_#_#_#_#_#_
#_#_#_#_#_#_#_
C1_edad_ini_cons_sus_ties<-
CONS_C1_df_dup_MAY_2020_prev0 %>%
dplyr::filter(hash_key %in% c(as.character(unlist(casos_fecha_inicio_cons_sus_empates_3["hash_key"]))))%>%
dplyr::as_tibble()%>%
janitor::clean_names()%>%
dplyr::select(row, hash_key, edad_ini_cons, sus_ini, sus_principal,edad_al_ing,edad,ano_bd,edad_ini_sus_prin)%>%
dplyr::arrange(hash_key)%>%
dplyr::mutate(rn=row_number())
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#nn: Neural Networks using nnet
#https://rdrr.io/cran/radiant.model/man/nn.html
#https://radiant-rstats.github.io/radiant.model/reference/nn.html
#https://radiant-rstats.github.io/docs/model/nn.html
#result <- radiant::nn(C1_fech_nac_ties, "fech_nac", "edad:edad_inicio_sustancia_principal", type = "regression")
result_edad_ini_cons_sus0<- nn(
C1_edad_ini_cons_sus_not_ties,
rvar = "edad_ini_cons", #The response variable in the model
evar = c(
"sus_ini", "sus_principal", "edad_al_ing", "edad",
"ano_bd","edad_ini_sus_prin"
), #Explanatory variables in the model
type = "regression", #Model type (i.e., "classification" or "regression")
#lev= The level in the response variable defined as _success_
#size= Number of units (nodes) in the hidden layer
#decay= Parameter decay
#wts= Weights to use in estimation
#seed= Random seed to use as the starting point
#check= Optional estimation parameters ("standardize" is the default)
#data_filter= Expression entered in, e.g., Data > View to filter the dataset in Radiant. The expression should be a string (e.g., "price > 10000")
#form= Optional formula to use instead of rvar and evar // Ocupar formula
seed = 1245
)
#The model can be “tuned” by changing the Size (i.e., the number of nodes in the hidden layer)
#and by adjusting the Decay rate. The higher the value set for Decay, the higher the penalty on
#the size of (the sum of squares of) the weights. When Decay is set to 0, the model has the most
#flexibility to fit the (training) data accurately. However, without Decay the model is also more
#likely to overfit.
#The best way to determine the optimal values for Size and Decays is to use Cross-Validation.
#In radiant, you can use the cv.nn function for this purpose.
#_#_#_#_#_#_#_
#cv.nn: Cross-validation for a Neural Network
#https://radiant-rstats.github.io/radiant.model/reference/cv.nn.html
#K= número de cv pasa para usar
#repeats= cv repetido
#decay= decaimiento en parámetros
#size=número de nodos en la capa oculta
#seed= semilla aleatoria como inicio
#trace= imprimir progreso
#fun= función para usar evaluación del modelo (auc para clasificación, RMSE para regresión; también está Rsq)
#https://rdrr.io/cran/radiant.model/man/auc.html
#https://rdrr.io/cran/radiant.model/man/RMSE.html
#https://rdrr.io/cran/radiant.model/man/profit.html
result_edad_ini_cons_all_cv<-
cv.nn(result_edad_ini_cons_sus0, K= 10, decay = seq(0, 1, .5), size = 1:5, fun = RMSE, trace=T, seed=1245)
Working on size 1 decay 0
Working on size 1 decay 0.5
Working on size 1 decay 1
Working on size 2 decay 0
Working on size 2 decay 0.5
Working on size 2 decay 1
Working on size 3 decay 0
Working on size 3 decay 0.5
Working on size 3 decay 1
Working on size 4 decay 0
Working on size 4 decay 0.5
Working on size 4 decay 1
Working on size 5 decay 0
Working on size 5 decay 0.5
Working on size 5 decay 1
#cv.nn(result, decay = seq(0, 1, .5), size = 1:2, fun = profit, cost = 1, margin = 5)
#30 minutos se demora en sacar size 1:4 con 4 fragmentos en decay
#selecciono los parámetros que permitan hacer la mejor estimación
nn_edad_ini_cons_par<-
result_edad_ini_cons_all_cv[which(result_edad_ini_cons_all_cv$`RMSE (mean)`==min(result_edad_ini_cons_all_cv$`RMSE (mean)`)),c("decay","size","RMSE (mean)")]
#_#_#_#_#_#_#_
#Modelo final
result_edad_ini_cons_sus<- nn(
C1_edad_ini_cons_sus_not_ties,
rvar = "edad_ini_cons",
evar = c(
"sus_ini", "sus_principal", "edad_al_ing", "edad","ano_bd","edad_ini_sus_prin"
),
type = "regression",
decay= as.numeric(nn_edad_ini_cons_par[1]),
size= as.numeric(nn_edad_ini_cons_par[2]),
seed = 1245
)
#33 MINUTOS DURA
#_#_#_#_#_#_#_
#PREDICT
#https://radiant-rstats.github.io/radiant.model/reference/predict.nn.html
#pred_data= Provide the dataframe to generate predictions (e.g., diamonds). The dataset must contain all columns used in the estimation
#pred_cmd= Generate predictions using a command. For example, `pclass = levels(pclass)` would produce predictions
#for the different levels of factor `pclass`. To add another variable, create a vector of prediction strings,
#(e.g., c('pclass = levels(pclass)', 'age = seq(0,100,20)')
#dec= Number of decimals to show
#envir= Environment to extract data from
#debemos eliminar los NAs
no_es=1
if (no_es==0){
print(paste0("comprobar si se reemplazó los valores perdidos por un 0.",
"Independiente de ello, si los lleno, al final los casos hacen un match perfecto a futuro"))
C1_edad_ini_cons_sus_ties[!complete.cases(C1_edad_ini_cons_sus_ties[, c("sus_ini", "sus_principal", "edad_al_ing", "edad","ano_bd","edad_ini_sus_prin")]),
c("sus_ini", "sus_principal", "edad_al_ing", "edad","ano_bd","edad_ini_sus_prin")]
}
#na.omit, sin variables na.
result_edad_ini_cons_sus_cv_pred<- predict(result_edad_ini_cons_sus, pred_data = na.omit(C1_edad_ini_cons_sus_ties))
To obtain valid ages, we predicted the age of onset of drug use. We generated a total of 10 cross-validations, with alternatives of 1 to 5 layers, and a threshold of 0, .5 and 1 in every model (10x5x3). The model that obtained the best fit (RMSE (mean)= 2.88) had a size of 5 hidden layers, and a threshold for weights of 0.5 (L2 penalty).
mar <- par(mar = c(0, 0, 0, 0))
on.exit(par(mar = mar$mar))
plot(result_edad_ini_cons_sus, plots = "net", custom=T,size = 9, pad_x = 0.8, nrobs = -1,cex_val = 3)
Figure 5a. Neural Network of Age of Onset of Drug Use
#https://rdrr.io/cran/radiant.model/man/plot.nn.html
#Options are "olden" or "garson" for importance plots, or "net" to depict the network structure
#custom es para modificarlo con ggplot2
#neural network as a neural interpretation diagram
#f the sign of the weights switches after passing the hidden layer
mar <- par(mar = c(0, 0, 0, 0))
on.exit(par(mar = mar$mar))
plot(result_edad_ini_cons_sus, plots = "olden", custom=T,size = 9, pad_x = 0.8, nrobs = -1,cex_val = 3)+
ggtitle("")
Figure 5b. Garson Plot of Variable Importance, Age of Onset of Drug Use
The plot presented showed the product of the weights through the model from each predictor to the output. As seen, the age of onset of drug use of the primary substance had an important and positive contribution to the weights of the model. In contrast, the year of the dataset in which cases were obtained had a small contribution. Lastly, starting substance such as cocaine paste base, hallucinogens and tranquilizers contributed but in a negative direction into the model,
#result_edad_ini_cons_sus_cv_pred
#na.omit(C1_edad_ini_cons_sus_ties)
age_onset_drug_use_replace_neuralnet_prev <-
result_edad_ini_cons_sus_cv_pred%>%
cbind(na.omit(C1_edad_ini_cons_sus_ties)[c("row","hash_key","edad_ini_cons")])%>%
dplyr::select(row, hash_key, everything())%>%
as.data.frame()%>%
dplyr::arrange(hash_key)%>%
dplyr::group_by(hash_key)%>%
dplyr::mutate(edad_ini_cons_2=lag(edad_ini_cons), edad_ini_sus_prin_2=lag(edad_ini_sus_prin), n_hash=n(), rn=row_number(), mean_pr= mean(Prediction))%>%
janitor::clean_names()%>%
dplyr::filter(n_hash>1)%>% #De 1,463 [572] a 1,450 [559]
dplyr::ungroup()%>%
dplyr::mutate(diff_mean=abs(edad_ini_cons-mean_pr))%>% #es la diferencia absoluta entre la edad d einicio de consumo y el promedio predicho. EL que tiene menor cantidad, es el que selecciono.p
dplyr::group_by(hash_key)%>%
dplyr::slice(which.min(diff_mean)) %>%
#dplyr::filter(diff_mean==min(diff_mean))%>%
dplyr::rename("Prediction_age_onset_dr_use"="prediction")
#SACAR CASOS INVALIDOS PORQUE LA EDAD DE INICIO DE CONSUMO DE SUSTANCIAS, SUSTANCIA PRINCIPAL,
# TERMINA SIENDO MENOR A LA EDAD DE INICIO DE CONSUMO A IMPUTAR
invalid_users_imputed_age_onset <-
CONS_C1_df_dup_MAY_2020_prev_3%>%
dplyr::left_join(age_onset_drug_use_replace_neuralnet_prev[,c("hash_key", "edad_ini_cons")], by="hash_key",suffix=c("","_age_of_onset_drug_use_neuralnet")) %>%
dplyr::filter(!is.na(edad_ini_cons_age_of_onset_drug_use_neuralnet))%>%
dplyr::mutate(edad_ini_cons_age_onset=ifelse(edad_ini_cons_age_of_onset_drug_use_neuralnet>edad_ini_sus_prin,1,0))%>%
dplyr::group_by(hash_key)%>%
dplyr::mutate(sum_inalid_imputed_age=sum(edad_ini_cons_age_onset))%>%
dplyr::ungroup()%>%
dplyr::filter(sum_inalid_imputed_age>0)%>%
dplyr::arrange(hash_key)%>%
dplyr::select(hash_key,edad_ini_cons_age_of_onset_drug_use_neuralnet,edad_ini_sus_prin,sum_inalid_imputed_age)%>%
group_by(hash_key)
age_onset_drug_use_replace_neuralnet <-
age_onset_drug_use_replace_neuralnet_prev %>%
dplyr::filter(!hash_key %in% as.character(unlist(invalid_users_imputed_age_onset["hash_key"])))
#21
#Misma bd, 2 casos
CONS_C1_df_dup_MAY_2020_prev_3%>%
dplyr::left_join(age_onset_drug_use_replace_neuralnet[,c("hash_key", "edad_ini_cons","edad_ini_sus_prin")], by="hash_key",suffix=c("","_age_of_onset_drug_use_neuralnet")) %>%
dplyr::mutate(obs=case_when(!is.na(edad_ini_cons_age_of_onset_drug_use_neuralnet)~glue::glue("{obs};3.03.2.XX.HASH w/ more than one distinct Age of Onset Drug Use.Neural network imputation of ties"),TRUE~obs))%>%
dplyr::mutate(edad_ini_cons= ifelse(!is.na(edad_ini_cons_age_of_onset_drug_use_neuralnet), as.integer(edad_ini_cons_age_of_onset_drug_use_neuralnet), as.integer(edad_ini_cons))) %>%
dplyr::select(-ends_with("_age_of_onset_drug_use_neuralnet")) %>%
dplyr::mutate(edad_ini_cons= as.integer(edad_ini_cons))%>%
dplyr::mutate(edad_ini_sus_prin= as.integer(edad_ini_sus_prin))%>%
assign("CONS_C1_df_dup_MAY_2020_prev_4",., envir = .GlobalEnv)
#janitor::tabyl(sexo_2)
#CONS_C1_df_dup_FEB_2020_prev25 %>% group_by(hash_key) %>% dplyr::mutate(sexo_2_por_hash=n_distinct(sexo_2)) %>% ungroup() %>% dplyr::filter(sexo_2_por_hash>1) %>% nrow() %>% formatC(, format="f", big.mark=",", digits=0)
#CONS_C1_df_dup_MAY_2020_prev_4 %>% dplyr::filter(grepl('3.03.2.', obs)) %>% dplyr::group_by(hash_key)
We selected the age of onset of drug use of cases within users that had the same amount of different values in the age of onset of drug use. We also extended this selection to the age of onset of drug use in the primary (users=488).
We used a neural network model to obtain valid ages of onset of drug use of the primary substance for 489 users that had more than one age of onset of drug use in treatments with the same primary substance.
#casos_fecha_inicio_cons_sus_prin_empates_3
age_onset_drug_use_replace_neuralnet_for_concat<-
age_onset_drug_use_replace_neuralnet %>%
dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal))
#preparo la base de datos con los datos que me interesan
C1_edad_ini_cons_sus_prin_not_ties<-
CONS_C1_df_dup_MAY_2020_prev_4 %>%
dplyr::filter(!concat_hash_sus_prin %in% c(as.character(unlist(casos_fecha_inicio_cons_sus_prin_empates_3["concat_hash_sus_prin"]))))%>%
#"_"_
#SACO LOS CASOS QUE TIENEN QUE VER CON LA IMPUTACION ANTERIOR
dplyr::filter(!concat_hash_sus_prin %in% c(as.character(unlist(age_onset_drug_use_replace_neuralnet_for_concat["concat_hash_sus_prin"]))))%>%
dplyr::as_tibble()%>%
janitor::clean_names()%>%
dplyr::select(row, concat_hash_sus_prin, hash_key, edad_ini_cons, sus_ini, sus_principal, edad_al_ing, edad, ano_bd, edad_ini_sus_prin)%>%
# sample_frac(.05)%>%
na.omit()%>%
dplyr::mutate(rn=row_number())
#_#_#_#_#_#_#_
#_#_#_#_#_#_#_
C1_edad_ini_cons_sus_prin_ties<-
CONS_C1_df_dup_MAY_2020_prev %>%
dplyr::mutate(concat_hash_sus_prin=paste0(hash_key,"_",sus_principal)) %>%
dplyr::filter(concat_hash_sus_prin %in% c(as.character(unlist(casos_fecha_inicio_cons_sus_prin_empates_3["concat_hash_sus_prin"]))))%>%
#SACO LOS CASOS QUE TIENEN QUE VER CON LA IMPUTACION ANTERIOR
dplyr::filter(!concat_hash_sus_prin %in% c(as.character(unlist(age_onset_drug_use_replace_neuralnet_for_concat["concat_hash_sus_prin"]))))%>%
dplyr::as_tibble()%>%
janitor::clean_names()%>%
dplyr::select(row, concat_hash_sus_prin, hash_key, edad_ini_cons, sus_ini, sus_principal, edad_al_ing, edad, ano_bd, edad_ini_sus_prin)%>%
dplyr::arrange(concat_hash_sus_prin)%>%
dplyr::mutate(rn=row_number())
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#nn: Neural Networks using nnet
#https://rdrr.io/cran/radiant.model/man/nn.html
#https://radiant-rstats.github.io/radiant.model/reference/nn.html
#https://radiant-rstats.github.io/docs/model/nn.html
#result <- radiant::nn(C1_fech_nac_ties, "fech_nac", "edad:edad_inicio_sustancia_principal", type = "regression")
result_edad_ini_cons_sus_prin0<- nn(
C1_edad_ini_cons_sus_prin_not_ties,
rvar = "edad_ini_sus_prin", #The response variable in the model
evar = c(
"sus_ini", "sus_principal", "edad_al_ing", "edad",
"ano_bd","edad_ini_cons"
), #Explanatory variables in the model
type = "regression", #Model type (i.e., "classification" or "regression")
#lev= The level in the response variable defined as _success_
#size= Number of units (nodes) in the hidden layer
#decay= Parameter decay
#wts= Weights to use in estimation
#seed= Random seed to use as the starting point
#check= Optional estimation parameters ("standardize" is the default)
#data_filter= Expression entered in, e.g., Data > View to filter the dataset in Radiant. The expression should be a string (e.g., "price > 10000")
#form= Optional formula to use instead of rvar and evar // Ocupar formula
seed = 1245
)
#The model can be “tuned” by changing the Size (i.e., the number of nodes in the hidden layer)
#and by adjusting the Decay rate. The higher the value set for Decay, the higher the penalty on
#the size of (the sum of squares of) the weights. When Decay is set to 0, the model has the most
#flexibility to fit the (training) data accurately. However, without Decay the model is also more
#likely to overfit.
#The best way to determine the optimal values for Size and Decays is to use Cross-Validation.
#In radiant, you can use the cv.nn function for this purpose.
#_#_#_#_#_#_#_
#cv.nn: Cross-validation for a Neural Network
#https://radiant-rstats.github.io/radiant.model/reference/cv.nn.html
#K= número de cv pasa para usar
#repeats= cv repetido
#decay= decaimiento en parámetros
#size=número de nodos en la capa oculta
#seed= semilla aleatoria como inicio
#trace= imprimir progreso
#fun= función para usar evaluación del modelo (auc para clasificación, RMSE para regresión; también está Rsq)
#https://rdrr.io/cran/radiant.model/man/auc.html
#https://rdrr.io/cran/radiant.model/man/RMSE.html
#https://rdrr.io/cran/radiant.model/man/profit.html
result_edad_ini_cons_susprin_all_cv<-
cv.nn(result_edad_ini_cons_sus_prin0, K= 10, decay = seq(0, 1, .5), size = 1:5, fun = RMSE, trace=T, seed=1245)
Working on size 1 decay 0
Working on size 1 decay 0.5
Working on size 1 decay 1
Working on size 2 decay 0
Working on size 2 decay 0.5
Working on size 2 decay 1
Working on size 3 decay 0
Working on size 3 decay 0.5
Working on size 3 decay 1
Working on size 4 decay 0
Working on size 4 decay 0.5
Working on size 4 decay 1
Working on size 5 decay 0
Working on size 5 decay 0.5
Working on size 5 decay 1
#cv.nn(result, decay = seq(0, 1, .5), size = 1:2, fun = profit, cost = 1, margin = 5)
#30 minutos se demora en sacar size 1:4 con 4 fragmentos en decay
#selecciono los parámetros que permitan hacer la mejor estimación
nn_edad_ini_cons_sus_prin_par<-
result_edad_ini_cons_susprin_all_cv[which(result_edad_ini_cons_susprin_all_cv$`RMSE (mean)`==min(result_edad_ini_cons_susprin_all_cv$`RMSE (mean)`)),c("decay","size","RMSE (mean)")]
#_#_#_#_#_#_#_
#Modelo final
result_edad_ini_cons_sus_prin<- nn(
C1_edad_ini_cons_sus_prin_not_ties,
rvar = "edad_ini_sus_prin",
evar = c(
"sus_ini", "sus_principal", "edad_al_ing", "edad","ano_bd","edad_ini_cons"
),
type = "regression",
decay= as.numeric(nn_edad_ini_cons_sus_prin_par[1]),
size= as.numeric(nn_edad_ini_cons_sus_prin_par[2]),
seed = 1245
)
#33 MINUTOS DURA
#_#_#_#_#_#_#_
#PREDICT
#https://radiant-rstats.github.io/radiant.model/reference/predict.nn.html
#pred_data= Provide the dataframe to generate predictions (e.g., diamonds). The dataset must contain all columns used in the estimation
#pred_cmd= Generate predictions using a command. For example, `pclass = levels(pclass)` would produce predictions
#for the different levels of factor `pclass`. To add another variable, create a vector of prediction strings,
#(e.g., c('pclass = levels(pclass)', 'age = seq(0,100,20)')
#dec= Number of decimals to show
#envir= Environment to extract data from
#debemos eliminar los NAs
no_es=1
if (no_es==0){
print(paste0("comprobar si se reemplazó los valores perdidos por un 0.",
"Independiente de ello, si los lleno, al final los casos hacen un match perfecto a futuro"))
C1_edad_ini_cons_sus_ties[!complete.cases(C1_edad_ini_cons_sus_ties[, c("sus_ini", "sus_principal", "edad_al_ing", "edad","ano_bd","edad_ini_sus_prin")]),
c("sus_ini", "sus_principal", "edad_al_ing", "edad","ano_bd","edad_ini_sus_prin")]
}
#na.omit, sin variables na.
result_edad_ini_cons_sus_prin_cv_pred<- predict(result_edad_ini_cons_sus_prin,
pred_data = na.omit(C1_edad_ini_cons_sus_prin_ties))
To obtain valid ages, we predicted the age of onset of drug use. We generated a total of 10 cross-validations, with alternatives of 1 to 5 layers, and a threshold of 0, .5 and 1 in every model (10x5x3). The model that obtained the best fit (RMSE (mean)= 4.63) had a size of 5 hidden layers, and a threshold for weights of 0.5 (L2 penalty).
mar <- par(mar = c(0, 0, 0, 0))
on.exit(par(mar = mar$mar))
plot(result_edad_ini_cons_sus_prin, plots = "net", custom=T,size = 9, pad_x = 0.8, nrobs = -1,cex_val = 3)
Figure 6a. Neural Network of Age of Onset of Drug Use
#https://rdrr.io/cran/radiant.model/man/plot.nn.html
#Options are "olden" or "garson" for importance plots, or "net" to depict the network structure
#custom es para modificarlo con ggplot2
#neural network as a neural interpretation diagram
#f the sign of the weights switches after passing the hidden layer
mar <- par(mar = c(0, 0, 0, 0))
on.exit(par(mar = mar$mar))
plot(result_edad_ini_cons_sus, plots = "olden", custom=T,size = 9, pad_x = 0.8, nrobs = -1,cex_val = 3)+
ggtitle("")
Figure 6b. Garson Plot of Variable Importance, Age of Onset of Drug Use
The plot presented showed the product of the weights through the model from each predictor to the output. As seen, the age of onset of drug use of the primary substance had an important and positive contribution to the weights of the model. In contrast, the year of the dataset in which cases were obtained had a small contribution. Lastly, starting substance such as cocaine paste base, hallucinogens and tranquilizers contributed but in a negative direction into the model,
#result_edad_ini_cons_sus_prin_cv_pred
#na.omit(C1_edad_ini_cons_sus_prin_ties)
age_onset_drug_use_prim_subs_replace_neuralnet_prev <-
result_edad_ini_cons_sus_prin_cv_pred%>%
cbind(na.omit(C1_edad_ini_cons_sus_prin_ties)[c("row","hash_key","concat_hash_sus_prin","edad_ini_sus_prin")])%>%
dplyr::select(row, hash_key, everything())%>%
as.data.frame()%>%
dplyr::arrange(concat_hash_sus_prin)%>%
dplyr::group_by(concat_hash_sus_prin)%>%
dplyr::mutate(n_concat_hash=n(), rn=row_number(), mean_pr= mean(Prediction))%>%
janitor::clean_names()%>%
dplyr::filter(n_concat_hash>1)%>% #De 795 [316] a 795 [316]
dplyr::ungroup()%>%
dplyr::mutate(diff_mean=abs(edad_ini_sus_prin-mean_pr))%>% #es la diferencia absoluta entre la edad d einicio de consumo sus prin y el promedio predicho. EL que tiene menor cantidad, es el que selecciono.p
dplyr::group_by(concat_hash_sus_prin)%>%
dplyr::slice(which.min(diff_mean)) %>%
#dplyr::filter(diff_mean==min(diff_mean))%>%
dplyr::rename("Prediction_age_onset_dr_use_prim_subs"="prediction")
#CONS_C1_df_dup_MAY_2020_prev_4 %>% dplyr::filter(concat_hash_sus_prin %in% as.character(unlist(na.omit(C1_edad_ini_cons_sus_prin_ties["concat_hash_sus_prin"]))))%>% group_by(concat_hash_sus_prin)
#SACAR CASOS INVALIDOS PORQUE LA EDAD DE INICIO DE CONSUMO DE SUSTANCIAS, SUSTANCIA PRINCIPAL,
# TERMINA SIENDO MENOR A LA EDAD DE INICIO DE CONSUMO A IMPUTAR
invalid_users_imputed_age_onset_prim_subs <-
CONS_C1_df_dup_MAY_2020_prev_4%>%
dplyr::left_join(age_onset_drug_use_prim_subs_replace_neuralnet_prev[,c("concat_hash_sus_prin", "edad_ini_sus_prin")], by="concat_hash_sus_prin",suffix=c("","_age_of_onset_drug_use_neuralnet")) %>% # glimpse()
dplyr::filter(!is.na(edad_ini_sus_prin_age_of_onset_drug_use_neuralnet))%>%
dplyr::mutate(edad_ini_sus_prin_age_onset_prim_subs=ifelse(edad_ini_sus_prin_age_of_onset_drug_use_neuralnet<edad_ini_cons,1,0))%>%
dplyr::group_by(concat_hash_sus_prin)%>%
dplyr::mutate(sum_inalid_imputed_age=sum(edad_ini_sus_prin_age_onset_prim_subs))%>%
dplyr::ungroup()%>%
dplyr::filter(sum_inalid_imputed_age>0)%>%
dplyr::arrange(concat_hash_sus_prin)%>%
dplyr::select(concat_hash_sus_prin,edad_ini_sus_prin_age_of_onset_drug_use_neuralnet,edad_ini_cons,sum_inalid_imputed_age)%>%
group_by(concat_hash_sus_prin)
#PARA VER CÓMO VOY
#CONS_C1_df_dup_MAY_2020_prev_4 %>% dplyr::filter(concat_hash_sus_prin=="01ade496577825c5d26c96df19531e9f_Pasta Base") %>% dplyr::select(hash_key, sus_principal, edad_ini_cons, edad_ini_sus_prin)
#NO ME VA A CALZAR, PORQUE EN UNA BASE ANTERIOR (PREV A SOLAS DE MAYO), ESTA COMBINACION DE USUARIO CON SUS PRIN TENIA DISTINTAS FECHAS, QUE ESTÁN YA RESUELTAS AHORA
age_onset_drug_use_prim_subs_replace_neuralnet <-
age_onset_drug_use_prim_subs_replace_neuralnet_prev %>%
dplyr::filter(!concat_hash_sus_prin %in% as.character(unlist(invalid_users_imputed_age_onset_prim_subs["concat_hash_sus_prin"])))%>%
#se supone que ya los descarté de un principio, pero por si acaso
dplyr::filter(!concat_hash_sus_prin %in% as.character(unlist(age_onset_drug_use_replace_neuralnet_for_concat["concat_hash_sus_prin"])))
#21
#Misma bd, 2 casos
CONS_C1_df_dup_MAY_2020_prev_4%>%
dplyr::left_join(age_onset_drug_use_prim_subs_replace_neuralnet[,c("concat_hash_sus_prin","edad_ini_sus_prin")], by="concat_hash_sus_prin",suffix=c("","_age_of_onset_drug_use_prim_subs_neuralnet")) %>%
dplyr::mutate(obs=case_when(!is.na(edad_ini_sus_prin_age_of_onset_drug_use_prim_subs_neuralnet)~glue::glue("{obs};3.03.3.XX.HASH w/ more than one distinct Age of Onset Drug Use Primary Substance.Neural network imputation of ties"),TRUE~obs))%>%
dplyr::mutate(edad_ini_sus_prin= ifelse(!is.na(edad_ini_sus_prin_age_of_onset_drug_use_prim_subs_neuralnet), as.integer(edad_ini_sus_prin_age_of_onset_drug_use_prim_subs_neuralnet), as.integer(edad_ini_sus_prin))) %>%
dplyr::select(-ends_with("_age_of_onset_drug_use_prim_subs_neuralnet")) %>%
dplyr::mutate(edad_ini_sus_prin= as.integer(edad_ini_sus_prin))%>%
assign("CONS_C1_df_dup_MAY_2020_prev_5",., envir = .GlobalEnv)
#janitor::tabyl(sexo_2)
#CONS_C1_df_dup_FEB_2020_prev25 %>% group_by(hash_key) %>% dplyr::mutate(sexo_2_por_hash=n_distinct(sexo_2)) %>% ungroup() %>% dplyr::filter(sexo_2_por_hash>1) %>% nrow() %>% formatC(, format="f", big.mark=",", digits=0)
#CONS_C1_df_dup_MAY_2020_prev_5 %>% dplyr::filter(grepl('3.03.3.XX.', obs)) %>% dplyr::group_by(hash_key)
#800 casos y 311 usuarios, 316 combinaciones
We selected the age of onset of drug use in the primary substance of cases within users that had the same amount of different values in the age of onset of drug use of primary substance. We also extended this selection to the age of onset of drug use in the primary substance of admission (users=292).
At this point, it is necessary to differentiate between intermediate treatment events (referrals, changes in the treatment center, among others) and different treatments. But what would be a suitable cut point?, that is why we explored the amount of days between each entry in users that had more than one treatment.
First, we created the variable called macrozona into the following macro-zones: North (02, 15, 03, 04, 01), Center (08, 05, 06, 07, 13, 16) & South (09,11, 10, 14, 12). Also, we recoded the regions into more readable labels and added the number of the region in parenthesis into the variable nombre_region. We recoded the communes/districts of residence of users by taking the notation of the Nationwide Census of 2017 and a standardized code in parenthesis, into the variable comuna_residencia_cod.
CONS_C1_df_dup_MAY_2020_prev_5%>%
dplyr::mutate(macrozona=as.factor(dplyr::recode(region_del_centro,
"DE ANTOFAGASTA"="Norte",
"DE LA ARAUCANIA"="Sur",
"DE ARICA Y PARINACOTA"="Norte",
"DE ATACAMA"="Norte",
"DE AYSEN DEL GENERAL CARLOS IBA?S DEL CAMPO"="Sur",
"DEL BIO-BIO"="Centro",
"DE COQUIMBO"="Norte",
"DE LOS LAGOS"="Sur",
"DE LOS RIOS"="Sur",
"DE MAGALLANES Y LA ANTARTICA CHILENA"="Sur",
"DEL MAULE"="Centro",
"METROPOLITANA"="Centro",
"DE ?BLE"="Centro",
"DEL LIBERTADOR GENERAL BERNARDO OHIGGINS"="Centro",
"DE TARAPACA"="Norte",
"DE VALPARAISO"="Centro")))%>%
dplyr::mutate(nombre_region=as.factor(dplyr::recode(region_del_centro,
"DE ANTOFAGASTA"="Antofagasta (02)",
"DE LA ARAUCANIA"="Araucanía (09)",
"DE ARICA Y PARINACOTA"="Arica (15)",
"DE ATACAMA"="Atacama (03)",
"DE AYSEN DEL GENERAL CARLOS IBA?S DEL CAMPO"="Aysén (11)",
"DEL BIO-BIO"="Biobío (08)",
"DE COQUIMBO"="Coquimbo (04)",
"DE LOS LAGOS"="Los Lagos (10)",
"DE LOS RIOS"="Los Ríos (14)",
"DE MAGALLANES Y LA ANTARTICA CHILENA"="Magallanes (12)",
"DEL MAULE"="Maule (07)",
"METROPOLITANA"="Metropolitana (13)",
"DE ?BLE"="Ñuble (16)",
"DEL LIBERTADOR GENERAL BERNARDO OHIGGINS"="O'Higgins (06)",
"DE TARAPACA"="Tarapacá (01)",
"DE VALPARAISO"="Valparaíso (05)")))%>%
dplyr::mutate(comuna_residencia_cod=as.factor(dplyr::recode(comuna_residencia,
"??A"="ÑUÑOA (13120)",
"ALGARROBO"="ALGARROBO (5602)",
"ALHUE"="ALHUÉ (13502)",
"ALTO DEL CARMEN"="ALTO DEL CARMEN (3302)",
"ALTO HOSPICIO"="ALTO HOSPICIO (1107)",
"ANCUD"="ANCUD (10202)",
"ANDACOLLO"="ANDACOLLO (4103)",
"ANGOL"="ANGOL (9201)",
"ANTOFAGASTA"="ANTOFAGASTA (2101)",
"ANTUCO"="ANTUCO (8302)",
"ARAUCO"="ARAUCO (8202)",
"ARICA"="ARICA (15101)",
"AYSEN"="AYSÉN (11201)",
"BUIN"="BUIN (13402)",
"BULNES"="BULNES * (8402)",
"CA?TE"="CAÑETE (8203)",
"CABILDO"="CABILDO (5402)",
"CABRERO"="CABRERO (8303)",
"CALAMA"="CALAMA (2201)",
"CALBUCO"="CALBUCO (10102)",
"CALDERA"="CALDERA (3102)",
"CALERA DE TANGO"="CALERA DE TANGO (13403)",
"CALLE LARGA"="CALLE LARGA (5302)",
"CAMARONES"="CAMARONES (15102)",
"CAMINA"="CAMIÑA (1402)",
"CANELA"="CANELA (4202)",
"CARAHUE"="CARAHUE (9102)",
"CARTAGENA"="CARTAGENA (5603)",
"CASABLANCA"="CASABLANCA (5102)",
"CASTRO"="CASTRO (10201)",
"CATEMU"="CATEMU (5702)",
"CAUQUENES"="CAUQUENES (7201)",
"CERRILLOS"="CERRILLOS (13102)",
"CERRO NAVIA"="CERRO NAVIA (13103)",
"CHA?RAL"="CHAÑARAL (3201)",
"CHANCO"="CHANCO (7202)",
"CHEPICA"="CHÉPICA (6302)",
"CHIGUAYANTE"="CHIGUAYANTE (8103)",
"CHILE CHICO"="CHILE CHICO (11401)",
"CHILLAN"="CHILLÁN * (8401)",
"CHILLAN VIEJO"="CHILLÁN VIEJO * (8406)",
"CHIMBARONGO"="CHIMBARONGO (6303)",
"Cholchol"="CHOLCHOL (9121)",
"CHONCHI"="CHONCHI (10203)",
"CISNES"="CISNES (11202)",
"COCHAMO"="COCHAMÓ (10103)",
"COCHRANE"="COCHRANE (11301)",
"CODEGUA"="CODEGUA (6102)",
"COELEMU"="COELEMU * (8404)",
"COIHUECO"="COIHUECO * (8405)",
"COINCO"="COINCO (6103)",
"COLBUN"="COLBÚN (7402)",
"COLCHANE"="COLCHANE (1403)",
"COLINA"="COLINA (13301)",
"COLLIPULLI"="COLLIPULLI (9202)",
"COLTAUCO"="COLTAUCO (6104)",
"COMBARBALA"="COMBARBALÁ (4302)",
"CONCEPCION"="CONCEPCIÓN (8101)",
"CONCHALI"="CONCHALÍ (13104)",
"CONCON"="CONCÓN (5103)",
"CONSTITUCION"="CONSTITUCIÓN (7102)",
"CONTULMO"="CONTULMO (8204)",
"COPIAPO"="COPIAPÓ (3101)",
"COQUIMBO"="COQUIMBO (4102)",
"CORONEL"="CORONEL (8102)",
"CORRAL"="CORRAL (14102)",
"COYHAIQUE"="COYHAIQUE (11101)",
"CUNCO"="CUNCO (9103)",
"CURACAUTIN"="CURACAUTÍN (9203)",
"CURACAVI"="CURACAVÍ (13503)",
"CURACO DE VELEZ"="CURACO DE VÉLEZ (10204)",
"CURANILAHUE"="CURANILAHUE (8205)",
"CURARREHUE"="CURARREHUE (9104)",
"CUREPTO"="CUREPTO (7103)",
"CURICO"="CURICÓ (7301)",
"DALCAHUE"="DALCAHUE (10205)",
"DIEGO DE ALMAGRO"="DIEGO DE ALMAGRO (3202)",
"DO?HUE"="DOÑIHUE (6105)",
"EL BOSQUE"="EL BOSQUE (13105)",
"EL CARMEN"="EL CARMEN * (8407)",
"EL MONTE"="EL MONTE (13602)",
"EL QUISCO"="EL QUISCO (5604)",
"EL TABO"="EL TABO (5605)",
"EMPEDRADO"="EMPEDRADO (7104)",
"ERCILLA"="ERCILLA (9204)",
"ESTACION CENTRAL"="ESTACIÓN CENTRAL (13106)",
"FLORIDA"="FLORIDA (8104)",
"FREIRE"="FREIRE (9105)",
"FREIRINA"="FREIRINA (3303)",
"FRESIA"="FRESIA (10104)",
"FRUTILLAR"="FRUTILLAR (10105)",
"FUTRONO"="FUTRONO (14202)",
"GORBEA"="GORBEA (9107)",
"GRANEROS"="GRANEROS (6106)",
"GUAITECAS"="GUAITECAS (11203)",
"HIJUELAS"="HIJUELAS (5503)",
"HUALA?"="HUALAÑÉ (7302)",
"HUALAIHUE"="HUALAIHUÉ (10403)",
"HUALPEN"="HUALPÉN (8112)",
"HUALQUI"="HUALQUI (8105)",
"HUARA"="HUARA (1404)",
"HUASCO"="HUASCO (3304)",
"HUECHURABA"="HUECHURABA (13107)",
"ILLAPEL"="ILLAPEL (4201)",
"INDEPENDENCIA"="INDEPENDENCIA (13108)",
"IQUIQUE"="IQUIQUE (1101)",
"ISLA DE MAIPO"="ISLA DE MAIPO (13603)",
"ISLA DE PASCUA"="ISLA DE PASCUA (5201)",
"JUAN FERNANDEZ"="JUAN FERNÁNDEZ (5104)",
"LA CALERA"="CALERA (5502)",
"LA CISTERNA"="LA CISTERNA (13109)",
"LA CRUZ"="LA CRUZ (5504)",
"LA ESTRELLA"="LA ESTRELLA (6202)",
"LA FLORIDA"="LA FLORIDA (13110)",
"LA GRANJA"="LA GRANJA (13111)",
"LA HIGUERA"="LA HIGUERA (4104)",
"LA LIGUA"="LA LIGUA (5401)",
"LA PINTANA"="LA PINTANA (13112)",
"LA REINA"="LA REINA (13113)",
"LA SERENA"="LA SERENA (4101)",
"LA UNION"="LA UNIÓN (14201)",
"LAGO RANCO"="LAGO RANCO (14203)",
"LAGO VERDE"="LAGO VERDE (11102)",
"LAJA"="LAJA (8304)",
"LAMPA"="LAMPA (13302)",
"LANCO"="LANCO (14103)",
"LAS CABRAS"="LAS CABRAS (6107)",
"LAS CONDES"="LAS CONDES (13114)",
"LAUTARO"="LAUTARO (9108)",
"LEBU"="LEBU (8201)",
"LICANTEN"="LICANTÉN (7303)",
"LIMACHE"="LIMACHE (5802)",
"LINARES"="LINARES (7401)",
"LITUECHE"="LITUECHE (6203)",
"LLANQUIHUE"="LLANQUIHUE (10107)",
"LLAY LLAY"="LLAILLAY (5703)",
"LO BARNECHEA"="LO BARNECHEA (13115)",
"LO ESPEJO"="LO ESPEJO (13116)",
"LO PRADO"="LO PRADO (13117)",
"LOLOL"="LOLOL (6304)",
"LONCOCHE"="LONCOCHE (9109)",
"LONGAVI"="LONGAVÍ (7403)",
"LONQUIMAY"="LONQUIMAY (9205)",
"LOS ALAMOS"="LOS ÁLAMOS (8206)",
"LOS ANDES"="LOS ANDES (5301)",
"LOS ANGELES"="LOS ÁNGELES (8301)",
"LOS LAGOS"="LOS LAGOS (14104)",
"LOS MUERMOS"="LOS MUERMOS (10106)",
"LOS SAUCES"="LOS SAUCES (9206)",
"LOS VILOS"="LOS VILOS (4203)",
"LOTA"="LOTA (8106)",
"LUMACO"="LUMACO (9207)",
"MACHALI"="MACHALÍ (6108)",
"MACUL"="MACUL (13118)",
"MAFIL"="MÁFIL (14105)",
"MAIPU"="MAIPÚ (13119)",
"MALLOA"="MALLOA (6109)",
"MARCHIGUE"="MARCHIHUE (6204)",
"MARIA ELENA"="MARÍA ELENA (2302)",
"MARIA PINTO"="MARÍA PINTO (13504)",
"MARIQUINA"="MARIQUINA (14106)",
"MAULE"="MAULE (7105)",
"MAULLIN"="MAULLÍN (10108)",
"MEJILLONES"="MEJILLONES (2102)",
"MELIPEUCO"="MELIPEUCO (9110)",
"MELIPILLA"="MELIPILLA (13501)",
"MOLINA"="MOLINA (7304)",
"MONTE PATRIA"="MONTE PATRIA (4303)",
"MULCHEN"="MULCHÉN (8305)",
"NACIMIENTO"="NACIMIENTO (8306)",
"NANCAGUA"="NANCAGUA (6305)",
"NAVARINO"="CABO DE HORNOS (12201)",
"NAVIDAD"="NAVIDAD (6205)",
"NEGRETE"="NEGRETE (8307)",
"NINHUE"="NINHUE * (8408)",
"NOGALES"="NOGALES (5506)",
"NUEVA IMPERIAL"="NUEVA IMPERIAL (9111)",
"O´HIGGINS"="O'HIGGINS (11302)",
"OLIVAR"="OLIVAR (6111)",
"OLLAG?"="OLLAGÜE (2202)",
"OLMUE"="OLMUÉ (5803)",
"OSORNO"="OSORNO (10301)",
"OVALLE"="OVALLE (4301)",
"PADRE HURTADO"="PADRE HURTADO (13604)",
"PADRE LAS CASAS"="PADRE LAS CASAS (9112)",
"PAIHUANO"="PAIGUANO (4105)",
"PAILLACO"="PAILLACO (14107)",
"PAINE"="PAINE (13404)",
"PALENA"="PALENA (10404)",
"PALMILLA"="PALMILLA (6306)",
"PANGUIPULLI"="PANGUIPULLI (14108)",
"PANQUEHUE"="PANQUEHUE (5704)",
"PAPUDO"="PAPUDO (5403)",
"PAREDONES"="PAREDONES (6206)",
"PARRAL"="PARRAL (7404)",
"PE?FLOR"="PEÑAFLOR (13605)",
"PE?LOLEN"="PEÑALOLÉN (13122)",
"PEDRO AGUIRRE CERDA"="PEDRO AGUIRRE CERDA (13121)",
"PELARCO"="PELARCO (7106)",
"PELLUHUE"="PELLUHUE (7203)",
"PEMUCO"="PEMUCO * (8410)",
"PENCAHUE"="PENCAHUE (7107)",
"PENCO"="PENCO (8107)",
"PERALILLO"="PERALILLO (6307)",
"PERQUENCO"="PERQUENCO (9113)",
"PETORCA"="PETORCA (5404)",
"PEUMO"="PEUMO (6112)",
"PICA"="PICA (1405)",
"PICHIDEGUA"="PICHIDEGUA (6113)",
"PICHILEMU"="PICHILEMU (6201)",
"PINTO"="PINTO * (8411)",
"PIRQUE"="PIRQUE (13202)",
"PITRUFQUEN"="PITRUFQUÉN (9114)",
"PLACILLA"="PLACILLA (6308)",
"PORTEZUELO"="PORTEZUELO * (8412)",
"PORVENIR"="PORVENIR (12301)",
"POZO ALMONTE"="POZO ALMONTE (1401)",
"PRIMAVERA"="PRIMAVERA (12302)",
"PROVIDENCIA"="PROVIDENCIA (13123)",
"PUCHUNCAVI"="PUCHUNCAVÍ (5105)",
"PUCON"="PUCÓN (9115)",
"PUDAHUEL"="PUDAHUEL (13124)",
"PUENTE ALTO"="PUENTE ALTO (13201)",
"PUERTO MONTT"="PUERTO MONTT (10101)",
"PUERTO NATALES"="NATALES (12401)",
"PUERTO OCTAY"="PUERTO OCTAY (10302)",
"PUERTO SAAVEDRA"="SAAVEDRA (9116)",
"PUERTO VARAS"="PUERTO VARAS (10109)",
"PUMANQUE"="PUMANQUE (6309)",
"PUNITAQUI"="PUNITAQUI (4304)",
"PUNTA ARENAS"="PUNTA ARENAS (12101)",
"PUQUELDON"="PUQUELDÓN (10206)",
"PUREN"="PURÉN (9208)",
"PURRANQUE"="PURRANQUE (10303)",
"PUTAENDO"="PUTAENDO (5705)",
"PUYEHUE"="PUYEHUE (10304)",
"QUEILEN"="QUEILÉN (10207)",
"QUELLON"="QUELLÓN (10208)",
"QUEMCHI"="QUEMCHI (10209)",
"QUILACO"="QUILACO (8308)",
"QUILICURA"="QUILICURA (13125)",
"QUILLECO"="QUILLECO (8309)",
"QUILLON"="QUILLÓN * (8413)",
"QUILLOTA"="QUILLOTA (5501)",
"QUILPUE"="QUILPUÉ (5801)",
"QUINCHAO"="QUINCHAO (10210)",
"QUINTA DE TILCOCO"="QUINTA DE TILCOCO (6114)",
"QUINTA NORMAL"="QUINTA NORMAL (13126)",
"QUINTERO"="QUINTERO (5107)",
"QUIRIHUE"="QUIRIHUE * (8414)",
"RANCAGUA"="RANCAGUA (6101)",
"RANQUIL"="RÁNQUIL * (8415)",
"RAUCO"="RAUCO (7305)",
"RECOLETA"="RECOLETA (13127)",
"RENAICO"="RENAICO (9209)",
"RENCA"="RENCA (13128)",
"RENGO"="RENGO (6115)",
"REQUINOA"="REQUÍNOA (6116)",
"RETIRO"="RETIRO (7405)",
"RINCONADA"="RINCONADA (5303)",
"RIO BUENO"="RÍO BUENO (14204)",
"RIO CLARO"="RÍO CLARO (7108)",
"RIO HURTADO"="RÍO HURTADO (4305)",
"RIO NEGRO"="RÍO NEGRO (10305)",
"ROMERAL"="ROMERAL (7306)",
"SAGRADA FAMILIA"="SAGRADA FAMILIA (7307)",
"SALAMANCA"="SALAMANCA (4204)",
"SAN ANTONIO"="SAN ANTONIO (5601)",
"SAN BERNARDO"="SAN BERNARDO (13401)",
"SAN CARLOS"="SAN CARLOS * (8416)",
"SAN CLEMENTE"="SAN CLEMENTE (7109)",
"SAN ESTEBAN"="SAN ESTEBAN (5304)",
"SAN FELIPE"="SAN FELIPE (5701)",
"SAN FERNANDO"="SAN FERNANDO (6301)",
"SAN FRANCISCO DE MOSTAZAL"="MOSTAZAL (6110)",
"SAN GREGORIO DE ?QUEN"="SAN GREGORIO (12104)",
"SAN IGNACIO"="SAN IGNACIO * (8418)",
"SAN JAVIER"="SAN JAVIER (7406)",
"SAN JOAQUIN"="SAN JOAQUÍN (13129)",
"SAN JOSE DE MAIPO"="SAN JOSÉ DE MAIPO (13203)",
"SAN JUAN DE LA COSTA"="SAN JUAN DE LA COSTA (10306)",
"SAN MIGUEL"="SAN MIGUEL (13130)",
"SAN PABLO"="SAN PABLO (10307)",
"SAN PEDRO"="SAN PEDRO (13505)",
"SAN PEDRO DE ATACAMA"="SAN PEDRO DE ATACAMA (2203)",
"SAN PEDRO DE LA PAZ"="SAN PEDRO DE LA PAZ (8108)",
"SAN RAFAEL"="SAN RAFAEL (7110)",
"SAN RAMON"="SAN RAMÓN (13131)",
"SAN ROSENDO"="SAN ROSENDO (8310)",
"SAN VICENTE"="SAN VICENTE (6117)",
"SANTA BARBARA"="SANTA BÁRBARA (8311)",
"SANTA CRUZ"="SANTA CRUZ (6310)",
"SANTA JUANA"="SANTA JUANA (8109)",
"SANTA MARIA"="SANTA MARÍA (5706)",
"SANTIAGO CENTRO"="SANTIAGO (13101)",
"SANTIAGO OESTE"="SANTIAGO (13101)",
"SANTIAGO SUR"="SANTIAGO (13101)",
"SANTO DOMINGO"="SANTO DOMINGO (5606)",
"SIERRA GORDA"="SIERRA GORDA (2103)",
"TALAGANTE"="TALAGANTE (13601)",
"TALCA"="TALCA (7101)",
"TALCAHUANO"="TALCAHUANO (8110)",
"TALTAL"="TALTAL (2104)",
"TEMUCO"="TEMUCO (9101)",
"TENO"="TENO (7308)",
"TEODORO SCHMIDT"="TEODORO SCHMIDT (9117)",
"TIERRA AMARILLA"="TIERRA AMARILLA (3103)",
"TIL-TIL"="TILTIL (13303)",
"TIRUA"="TIRÚA (8207)",
"TOCOPILLA"="TOCOPILLA (2301)",
"TOLTEN"="TOLTÉN (9118)",
"TOME"="TOMÉ (8111)",
"TORRES DEL PAINE"="TORRES DEL PAINE (12402)",
"TORTEL"="TORTEL (11303)",
"TRAIGUEN"="TRAIGUÉN (9210)",
"TREHUACO"="TREGUACO * (8420)",
"TUCAPEL"="TUCAPEL (8312)",
"VALDIVIA"="VALDIVIA (14101)",
"VALLENAR"="VALLENAR (3301)",
"VALPARAISO"="VALPARAÍSO (5101)",
"VI? DEL MAR"="VIÑA DEL MAR (5109)",
"VICHUQUEN"="VICHUQUÉN (7309)",
"VICTORIA"="VICTORIA (9211)",
"VICU?"="VICUÑA (4106)",
"VILCUN"="VILCÚN (9119)",
"VILLA ALEGRE"="VILLA ALEGRE (7407)",
"VILLA ALEMANA"="VILLA ALEMANA (5804)",
"VILLARRICA"="VILLARRICA (9120)",
"VITACURA"="VITACURA (13132)",
"YERBAS BUENAS"="YERBAS BUENAS (7408)",
"YUMBEL"="YUMBEL (8313)",
"YUNGAY"="YUNGAY * (8421)",
"ZAPALLAR"="ZAPALLAR (5405)")))%>%
assign("CONS_C1_df_dup_MAY_2020_prev_6a",., envir = .GlobalEnv)
library(dplyr)
library(choroplethr)
library(choroplethrMaps)
library(choroplethrAdmin1)
#_#_#_#_#__#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#__#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#__#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#__#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#__#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#__#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#__#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#__#_#_#_#_#_#_#_#_#_#_#_
library(ggplot2)
data(admin1.map, package="choroplethrAdmin1")
#get_admin1_regions("chile") # falta ñuble po la cresta
chile.map = admin1.map[admin1.map$admin == "chile" & admin1.map$long > -80, ]
#ggplot(chile.map, aes(long, lat, group=group)) + geom_polygon() + coord_map()
arica <- list(v ="01", n = "region de arica y parinacota")
tarapaca <- list(v = "02", n= "region de tarapaca")
antofagasta <- list(v = "6.24",n = "region de antofagasta")
atacama <- list(v = 6.66, n = "region de atacama")
coquimbo <- list(v = 6.93, n = "region de coquimbo")
valparaiso <- list(v = 7.19,n = "region de valparaiso")
metropolitana <- list(v = 6.33, n = "region metropolitana de santiago")
ohiggins <- list(v = 5.27, n = "region del libertador general bernardo o'higgins")
maule <- list(v = 5.99, n = "region del maule")
nuble <- list(v = 5.99, n = "region de ñuble")
biobio <- list(v = 8.07, n = "region del biobio")
araucania <- list(v = 6.07, n = "region de la araucania")
losrios <- list(v = 4.72, n = "region de los rios")
loslagos <- list(v = 3.82, n = "region de los lagos")
aysen <- list(v = 3.84, n = "region aisen del general carlos ibanez del campo")
magallanes <- list(v = 2.63, n = "region de magallanes y de la antartica chilena")
dat2 <- data.frame(
region = c(arica$n,tarapaca$n,antofagasta$n,atacama$n,coquimbo$n,valparaiso$n,
metropolitana$n,ohiggins$n,maule$n,nuble$n, biobio$n,araucania$n,losrios$n,
loslagos$n,aysen$n,magallanes$n)
)
datos_region <- chilemapas:: generar_regiones(mapa = chilemapas::mapa_comunas)
casos_region<-CONS_C1_df_dup_MAY_2020_prev_6a %>%
group_by(nombre_region)%>%
summarise(n=n())%>%
dplyr::mutate(cod.V1= str_sub(nombre_region, -3, -2))
dat2<-datos_region %>%
dplyr:::left_join(as_tibble(casos_region), by=c("codigo_region"="cod.V1")) %>%
dplyr::mutate(tooltip=paste0(`nombre_region`,"=",formatC(as.numeric(n), format="f", big.mark=",", digits=0)))
gg2<-ggplot(data=dat2) +
#geom_sf(aes(fill=as.numeric(dat2$value))) +
theme_minimal() +
geom_sf_interactive(aes(fill = cut(as.numeric(dat2$`n`),round(quantile(as.numeric(dat2$`n`),na.rm=T),0), include.lowest=TRUE,dig.lab=10,right=T), tooltip = tooltip, data_id = codigo_region))+
scale_fill_brewer(palette="Blues",na.value="grey80") +
labs(caption='Source: ',fill="No. of cases\n(quantiles)")# geom_sf(data = dat2, aes(fill = value)) +
# coord_sf( expand = T)
tooltip_css <- "background-color:gray;color:white;font-style:italic;padding:10px;border-radius:10px 20px 10px 20px;"
ggiraph(code = {print(gg2)}, tooltip_extra_css = tooltip_css, tooltip_opacity = .75 )
Figure 7a. Cases By Region
As seen in Figure 7a, most of the treatments have been concentrated in the metropolitan region.
mapa_comunas = chilemapas::mapa_comunas
codigo_comunas<-
CONS_C1_df_dup_MAY_2020_prev_6a %>%
dplyr::filter(grepl("Metropolitana",nombre_region))%>%
dplyr::group_by(comuna_residencia_cod)%>%
summarise(n=n())%>%
dplyr::mutate(cod.V1= str_sub(comuna_residencia_cod, -6, -2))%>%
# dplyr::select(-comuna_residencia_cod)%>%
dplyr::mutate(cod.V1= stringr::str_replace(cod.V1, "\\(", "0"))
dat2<-mapa_comunas %>%
dplyr:::left_join(as_tibble(codigo_comunas), by=c("codigo_comuna"="cod.V1")) %>%
dplyr::filter(codigo_region=="13")%>%
dplyr::mutate(tooltip=paste0(`comuna_residencia_cod`,"=",formatC(as.numeric(n), format="f", big.mark=",", digits=0)))%>%
dplyr::mutate(n_cut=cut(as.numeric(n),round(quantile(as.numeric(n),na.rm=T),0), include.lowest=TRUE,dig.lab=10,right=T))
dat2 <- as_tibble(dat2)
suppressPackageStartupMessages(library(ggiraph))
suppressPackageStartupMessages(library(sf))
gg2<-
ggplot(data=dat2) +
# geom_sf(aes(fill=factor(n),geometry=geometry)) +
theme_minimal() +
geom_sf_interactive(aes(fill = n, tooltip = tooltip, data_id = codigo_comuna, geometry= geometry))+
scale_fill_gradient(low="white",high="steelblue") +
#scale_colour_brewer(breaks = rev(levels(dsamp$clarity)))+
labs(caption='Source: ',fill="No. of cases")# geom_sf(data = dat2, aes(fill = value)) +
# coord_sf( expand = T)
tooltip_css <- "background-color:gray;color:white;font-style:italic;padding:10px;border-radius:10px 20px 10px 20px;"
ggiraph(code = {print(gg2)}, tooltip_extra_css = tooltip_css, tooltip_opacity = .75 )
Figure 7b. Cases By Region
As seen in Figure 7b, most of the treatments have been concentrated in La Pintana, Puente Alto, Pudahuel, and San Bernardo. In contrast, only a few treatments were registered in San Pedro, Alhue and Vitacura.
At this point, it was necessary to differentiate between intermediate treatment events (referrals, changes in the treatment center, among others) and different treatments. But what would be a suitable cut point?, that is why we explored the amount of days between each entry in users that had more than one treatment. This was done through the difference between the date of admission of a subsequent (more recent) entry of a user, and the date of discharge of the entry.
CONS_C1_df_dup_MAY_2020_prev_6b_exp_spaces<-
CONS_C1_df_dup_MAY_2020_prev_6b %>%
dplyr::group_by(hash_key) %>%
dplyr::mutate(fech_ing_num_may20=as.numeric(as.Date(fech_ing))) %>%
dplyr::mutate(fech_egres_num_may20=as.numeric(as.Date(fech_egres_imp))) %>%
dplyr::mutate(fech_egres_num_may20=ifelse(is.na(fech_egres_imp),18213,fech_egres_num_may20)) %>% #equivalente a 2019-11-13
dplyr::mutate(fech_ing_next_treat=dplyr::lag(fech_ing_num_may20)) %>%
dplyr::mutate(diff_bet_treat=fech_ing_next_treat-fech_egres_num_may20)%>%
dplyr::filter(!is.na(dias_trat_imp))%>%
#dplyr::select(hash_key,fech_ing,fech_ing_num_may20,fech_egres_imp, fech_egres_num_may20,dias_trat_imp,fech_ing_next_treat,diff_bet_treat)
dplyr::select(row,hash_key,fech_ing,fech_egres_imp, dias_trat_imp,diff_bet_treat,motivodeegreso_imp,motivodeegreso_mod_imp,id_centro)
knitr::kable(cbind(data.frame(psych::describe(CONS_C1_df_dup_MAY_2020_prev_6b_exp_spaces$diff_bet_treat)),t(quantile(CONS_C1_df_dup_MAY_2020_prev_6b_exp_spaces$diff_bet_treat,c(.10,.25,.5,.75,.9),na.rm=T))),
format = "html", format.args = list(decimal.mark = ".", big.mark = ","),
caption="Table 5. Summary Table for Difference Between Treatments (with the following entry)",
align =rep('c', 101)) %>%
kableExtra::kable_styling(bootstrap_options = c("striped", "hover"),font_size = 8) %>%
kableExtra::scroll_box(width = "100%", height = "150px")
| vars | n | mean | sd | median | trimmed | mad | min | max | range | skew | kurtosis | se | 10% | 25% | 50% | 75% | 90% | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| X1 | 1 | 31,666 | 434.2109 | 574.459 | 199 | 315.3459 | 292.0722 | 0 | 3,464 | 3,464 | 1.897949 | 3.695736 | 3.228215 | 1 | 19 | 199 | 623 | 1,244 |
#117,387
#85,722 unique hash key
# 109,268 = 8119 fechas de egreso perdidas
#
#quantile(CONS_C1_df_dup_MAY_2020_prev_2_exp_spaces$diff_bet_treat,c(seq(1,100)/100),na.rm=T)
quantiles_diff_bet_treat<-data.table::data.table(cbind(quantile(CONS_C1_df_dup_MAY_2020_prev_6b_exp_spaces$diff_bet_treat,c(seq(1,100)/100),na.rm=T)),keep.rownames = T)
#117387-31665
#diff_bet_treat= siempre es la diferencia con el siguiente tratmaiento
Considering the distribution of differences in days between each entry and what was discussed with the team of professionals of SENDA in charge of treatments, we defined the cutpoint in 60 days, which represented the 34% of the total differences .(n= 31,666).
We explored how was the distribution between the causes of discharge, depending on treatment conditions. This could be useful to get an impression of the adjustment of the cutpoint chosen.
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_#_#_#_#_#_#_#_#_#_#_
### Casos que tienen un motivo de egreso de derivación, pero en
cause_sin_otro_trat <-
CONS_C1_df_dup_MAY_2020_prev_6b %>%
dplyr::group_by(hash_key) %>%
dplyr::mutate(fech_ing_num_may20=as.numeric(as.Date(fech_ing))) %>%
dplyr::mutate(fech_egres_num_may20=as.numeric(as.Date(fech_egres_imp))) %>%
dplyr::mutate(fech_egres_num_may20=ifelse(is.na(fech_egres_imp),18213,fech_egres_num_may20)) %>% #equivalente a 2019-11-13
dplyr::mutate(fech_ing_next_treat=dplyr::lag(fech_ing_num_may20)) %>%
dplyr::mutate(diff_bet_treat=fech_ing_next_treat-fech_egres_num_may20)%>%
dplyr::ungroup()%>%
dplyr::mutate(caso=case_when(is.na(diff_bet_treat) & motivodeegreso_mod=="Derivación"~"1.sin tratamiento posterior, con motivo derivación",TRUE~""))%>%
#dplyr::filter(grepl('1.sin tratamiento', caso))%>%
# dplyr::select(row,hash_key,fech_ing,fech_egres_imp, dias_trat_imp,diff_bet_treat,motivodeegreso_imp,motivodeegreso_mod_imp,id_centro)
# 1. Motivo de egreso
dplyr::filter(is.na(diff_bet_treat)) %>%
janitor::tabyl(motivodeegreso_mod) %>%
dplyr::mutate(percent=percent*100 ,
valid_percent=valid_percent*100)
# Una8817 tiene como motivo Derivación
#dplyr::select(row,hash_key,fech_ing,fech_egres_imp, dias_trat_imp,diff_bet_treat,motivodeegreso_imp,motivodeegreso_mod_imp,id_centro)
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_#_#_#_#_#_#_#_#_#_#_
#CON TRATAMIENTO POSTERIOR, MENOR O IGUAL A 60 DIAS
cause_menor_60_dias<-
CONS_C1_df_dup_MAY_2020_prev_6b %>%
dplyr::group_by(hash_key) %>%
dplyr::mutate(fech_ing_num_may20=as.numeric(as.Date(fech_ing))) %>%
dplyr::mutate(fech_egres_num_may20=as.numeric(as.Date(fech_egres_imp))) %>%
dplyr::mutate(fech_egres_num_may20=ifelse(is.na(fech_egres_imp),18213,fech_egres_num_may20)) %>% #equivalente a 2019-11-13
dplyr::mutate(fech_ing_next_treat=dplyr::lag(fech_ing_num_may20)) %>%
dplyr::mutate(diff_bet_treat=fech_ing_next_treat-fech_egres_num_may20)%>%
dplyr::ungroup()%>%
dplyr::mutate(caso=case_when(is.na(diff_bet_treat) & motivodeegreso_mod=="Derivación"~"1.sin tratamiento posterior, con motivo derivación",TRUE~""))%>%
#dplyr::filter(grepl('1.sin tratamiento', caso))%>%
# dplyr::select(row,hash_key,fech_ing,fech_egres_imp, dias_trat_imp,diff_bet_treat,motivodeegreso_imp,motivodeegreso_mod_imp,id_centro)
# 1. Motivo de egreso
dplyr::filter(!is.na(diff_bet_treat),diff_bet_treat<=60) %>%
janitor::tabyl(motivodeegreso_mod)%>%
dplyr::mutate(percent=percent*100 ,
valid_percent=valid_percent*100)
cause_mayor_60_dias<-
CONS_C1_df_dup_MAY_2020_prev_6b %>%
dplyr::group_by(hash_key) %>%
dplyr::mutate(fech_ing_num_may20=as.numeric(as.Date(fech_ing))) %>%
dplyr::mutate(fech_egres_num_may20=as.numeric(as.Date(fech_egres_imp))) %>%
dplyr::mutate(fech_egres_num_may20=ifelse(is.na(fech_egres_imp),18213,fech_egres_num_may20)) %>% #equivalente a 2019-11-13
dplyr::mutate(fech_ing_next_treat=dplyr::lag(fech_ing_num_may20)) %>%
dplyr::mutate(diff_bet_treat=fech_ing_next_treat-fech_egres_num_may20)%>%
dplyr::ungroup()%>%
dplyr::mutate(caso=case_when(is.na(diff_bet_treat) & motivodeegreso_mod=="Derivación"~"1.sin tratamiento posterior, con motivo derivación",TRUE~""))%>%
#dplyr::filter(grepl('1.sin tratamiento', caso))%>%
# dplyr::select(row,hash_key,fech_ing,fech_egres_imp, dias_trat_imp,diff_bet_treat,motivodeegreso_imp,motivodeegreso_mod_imp,id_centro)
# 1. Motivo de egreso
dplyr::filter(!is.na(diff_bet_treat),diff_bet_treat>60) %>%
janitor::tabyl(motivodeegreso_mod)%>%
dplyr::mutate(percent=percent*100 ,
valid_percent=valid_percent*100)
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
library(ggplot2)
library(treemapify)
dt_cause_discharge<-data.frame(
rbind(
cbind(Status="Only one Entry", cause_sin_otro_trat[1:3]),
cbind(Status=">1 Entry, <= 60d",cause_menor_60_dias[1:3]),
cbind(Status=">1 Entry, >60d",cause_mayor_60_dias[1:3])
)
) %>% dplyr::mutate(percent= paste0(round(as.numeric(percent)),"%"))%>%
dplyr::mutate(tooltip=paste0(`motivodeegreso_mod`,"=",`n`,"\n", percent))
# plot
plot<-ggplot(dt_cause_discharge, aes(area = n,
fill = motivodeegreso_mod,
label = percent,
subgroup=Status)) +
geom_treemap() +
geom_treemap_subgroup_border(color="grey25") +
scale_fill_brewer(palette = "Blues",na.value = "gray70") +
geom_treemap_subgroup_text(place = "centre", grow = T, alpha = 0.5, colour =
"black", fontface = "bold", min.size = 1) +
geom_treemap_text(colour = "blue4",fontface = "italic", place = "centre", reflow = T, alpha=.6,size = 10.5)+
geom_rect_interactive(alpha = 0.1, xmin=.1, xmax=.1, ymin=.1,ymax=.1) +
# Remove plot elements added by geom_rect_interactive
scale_x_continuous(expand = c(0, 0)) +
scale_y_continuous(expand = c(0, 0)) +
theme_void()+
theme(legend.position="bottom")+
guides(fill=guide_legend(ncol=4))+
theme(legend.text = element_text(size=9))+
theme(legend.title = element_blank())+
theme(axis.text = element_blank(), axis.ticks = element_blank())
# Draw with ggiraph
ggiraph(code = print(plot))
Figure 8. Treemap of Cause of Discharge Depending On Treatment/Events Conditions
#ggiraph(code = {print(plot)}, tooltip_extra_css = tooltip_css, tooltip_opacity = .75 )
As can be seen in Figure 8, Referrals in cases with more than one entry by user and equal or less than 60 days of difference between them, were overwhelmingly superior compared to the same category among entries that had more than 60 days of difference. Also users that only had one treatment in the study period had a small proportion of referrals compared to cases with more than one entries by user, with equal or less than 60 days of difference between last treatment.
We considered that it was important to explore the changes between one entry of a user and their previous, since this can shed light if a certain entry can be really considered as a different treatment from the next one, leading to identify a true readmission.
CONS_C1_df_dup_MAY_2020_prev_6b %>%
dplyr::group_by(hash_key) %>%
dplyr::mutate(fech_ing_num_may20=as.numeric(as.Date(fech_ing))) %>%
dplyr::mutate(fech_egres_num_may20=as.numeric(as.Date(fech_egres_imp))) %>%
dplyr::mutate(fech_egres_num_may20=ifelse(is.na(fech_egres_imp),18213,fech_egres_num_may20)) %>% #equivalente a 2019-11-13
dplyr::mutate(fech_ing_next_treat=dplyr::lag(fech_ing_num_may20)) %>%
dplyr::mutate(diff_bet_treat=fech_ing_next_treat-fech_egres_num_may20)%>%
dplyr::mutate(id_centro_sig_trat=dplyr::lag(id_centro)) %>%
dplyr::mutate(tipo_plan_sig_trat=dplyr::lag(tipo_de_plan_2)) %>%
dplyr::mutate(tipo_programa_sig_trat=dplyr::lag(tipo_de_programa_2)) %>%
dplyr::mutate(senda_sig_trat=dplyr::lag(senda)) %>%
dplyr::ungroup()%>%
#ver los criterios ppt
dplyr::filter(!is.na(diff_bet_treat),diff_bet_treat<=60) %>%
dplyr::mutate(obs_cambios=case_when(id_centro_sig_trat!=id_centro~"1.1.cambio centro",TRUE~""))%>%
dplyr::mutate(obs_cambios=case_when(tipo_plan_sig_trat!=tipo_de_plan_2~glue::glue("{obs_cambios};1.2.cambio tipo plan"),TRUE~obs_cambios))%>%
dplyr::mutate(obs_cambios=case_when(tipo_programa_sig_trat!=tipo_de_programa_2~glue::glue("{obs_cambios};1.3.cambio tipo programa"),TRUE~obs_cambios))%>%
dplyr::mutate(obs_cambios=case_when(senda_sig_trat!=senda~glue::glue("{obs_cambios};1.4.cambio senda"),TRUE~obs_cambios))%>%
dplyr::mutate(obs_cambios_num=case_when(id_centro_sig_trat!=id_centro~1,TRUE~0))%>%
dplyr::mutate(obs_cambios_num=case_when(tipo_plan_sig_trat!=tipo_de_plan_2~obs_cambios_num+1,TRUE~obs_cambios_num))%>%
dplyr::mutate(obs_cambios_num=case_when(tipo_programa_sig_trat!=tipo_de_programa_2~obs_cambios_num+1,TRUE~obs_cambios_num))%>%
dplyr::mutate(obs_cambios_num=case_when(senda_sig_trat!=senda~obs_cambios_num+1,TRUE~obs_cambios_num))%>%
dplyr::select(row,hash_key,fech_ing,fech_egres_imp, dias_trat_imp,diff_bet_treat,obs_cambios) %>%
janitor::tabyl(obs_cambios)%>%
dplyr::mutate(percent=round(percent*100,1))%>%
knitr::kable(format = "html", format.args = list(decimal.mark = ".", big.mark = ","),
caption="Table 6. Frequency and Percentage of Types of Changes Between Treatments (<=60 days between treatments)",
col.names = c("Changes", "No.", "%"),
align =rep('c', 101)) %>%
kableExtra::kable_styling(bootstrap_options = c("striped", "hover"),font_size = 8) %>%
kableExtra::scroll_box(width = "100%", height = "350px")
| Changes | No. | % |
|---|---|---|
| 1,227 | 11.6 | |
| ;1.2.cambio tipo plan | 1,073 | 10.2 |
| ;1.2.cambio tipo plan;1.3.cambio tipo programa | 143 | 1.4 |
| ;1.2.cambio tipo plan;1.3.cambio tipo programa;1.4.cambio senda | 22 | 0.2 |
| ;1.2.cambio tipo plan;1.4.cambio senda | 62 | 0.6 |
| ;1.3.cambio tipo programa | 3 | 0.0 |
| ;1.3.cambio tipo programa;1.4.cambio senda | 2 | 0.0 |
| ;1.4.cambio senda | 128 | 1.2 |
| 1.1.cambio centro | 940 | 8.9 |
| 1.1.cambio centro;1.2.cambio tipo plan | 4,668 | 44.2 |
| 1.1.cambio centro;1.2.cambio tipo plan;1.3.cambio tipo programa | 1,659 | 15.7 |
| 1.1.cambio centro;1.2.cambio tipo plan;1.3.cambio tipo programa;1.4.cambio senda | 112 | 1.1 |
| 1.1.cambio centro;1.2.cambio tipo plan;1.4.cambio senda | 387 | 3.7 |
| 1.1.cambio centro;1.3.cambio tipo programa | 50 | 0.5 |
| 1.1.cambio centro;1.3.cambio tipo programa;1.4.cambio senda | 6 | 0.1 |
| 1.1.cambio centro;1.4.cambio senda | 71 | 0.7 |
From the Table 6, we can see that the majority of cases changed center and type of plan (44.2%). These are followed by a group that changed the center, type of plan and type of program (15.7%). There was another group that did not changed in any characteristic from the earlier entry (11.6%). Also, a group of cases only changed the type of plan (10.2%), and other, only changed from one center to another (8.9%).
We fitted a model of the interactive effect of the number of changes from the next entry with referral, on the odds of showing <=60 days of difference with the next entry We suspected a nonlinear effect of reporting the next treatment with a cause of discharge as a referral. This difference may not be the same for cases that changed one, two, three or even four of characteristics of the treatment between the next entry.
# main= "Efecto conjunto de Cambios en Características de Tratamiento y Motivo de \n egreso (Derivación), en la probabilidad de que el Tratamiento Dure Menos o Igual de 60 días",
CONS_C1_df_dup_MAY_2020_prev_6b_glm_mas_de_un_trat <-
CONS_C1_df_dup_MAY_2020_prev_6b %>%
dplyr::group_by(hash_key) %>%
dplyr::mutate(fech_ing_num_may20=as.numeric(as.Date(fech_ing))) %>%
dplyr::mutate(fech_egres_num_may20=as.numeric(as.Date(fech_egres_imp))) %>%
dplyr::mutate(fech_egres_num_may20=ifelse(is.na(fech_egres_imp),18213,fech_egres_num_may20)) %>% #equivalente a 2019-11-13
dplyr::mutate(fech_ing_next_treat=dplyr::lag(fech_ing_num_may20)) %>%
dplyr::mutate(diff_bet_treat=fech_ing_next_treat-fech_egres_num_may20)%>%
dplyr::mutate(id_centro_sig_trat=dplyr::lag(id_centro)) %>%
dplyr::mutate(tipo_plan_sig_trat=dplyr::lag(tipo_de_plan_2)) %>%
dplyr::mutate(tipo_programa_sig_trat=dplyr::lag(tipo_de_programa_2)) %>%
dplyr::mutate(senda_sig_trat=dplyr::lag(senda)) %>%
dplyr::ungroup()%>%
#para tener sólo los casos que corresponde, que tienen comparaciones con un siguiente. Los otros no me interesan
dplyr::filter(!is.na(diff_bet_treat))%>%
dplyr::mutate(menor_60_dias_diff=case_when(diff_bet_treat<=60~1,TRUE~0))%>%
dplyr::mutate(motivoegreso_derivacion=case_when(motivodeegreso_mod=="Derivación"~1,TRUE~0))%>%
dplyr::mutate(obs_cambios=case_when(id_centro_sig_trat!=id_centro~"1.1.cambio centro",TRUE~""))%>%
dplyr::mutate(obs_cambios=case_when(tipo_plan_sig_trat!=tipo_de_plan_2~glue::glue("{obs_cambios};1.2.cambio tipo plan"),TRUE~obs_cambios))%>%
dplyr::mutate(obs_cambios=case_when(tipo_programa_sig_trat!=tipo_de_programa_2~glue::glue("{obs_cambios};1.3.cambio tipo programa"),TRUE~obs_cambios))%>%
dplyr::mutate(obs_cambios=case_when(senda_sig_trat!=senda~glue::glue("{obs_cambios};1.4.cambio senda"),TRUE~obs_cambios))%>%
dplyr::mutate(obs_cambios_ninguno=case_when(obs_cambios==""~1,TRUE~0))%>%
dplyr::mutate(obs_cambios_num=case_when(id_centro_sig_trat!=id_centro~1,TRUE~0))%>%
dplyr::mutate(obs_cambios_num=case_when(tipo_plan_sig_trat!=tipo_de_plan_2~obs_cambios_num+1,TRUE~obs_cambios_num))%>%
dplyr::mutate(obs_cambios_num=case_when(tipo_programa_sig_trat!=tipo_de_programa_2~obs_cambios_num+1,TRUE~obs_cambios_num))%>%
dplyr::mutate(obs_cambios_num=case_when(senda_sig_trat!=senda~obs_cambios_num+1,TRUE~obs_cambios_num))%>%
dplyr::mutate(obs_cambios_num=as.numeric(obs_cambios_num))%>%
dplyr::mutate(obs_cambios_ninguno=as.factor(obs_cambios_ninguno))%>%
dplyr::mutate(motivoegreso_derivacion=as.factor(motivoegreso_derivacion))%>%
dplyr::mutate(menor_60_dias_diff=as.factor(menor_60_dias_diff))%>%
dplyr::mutate(obs_cambios_fac=as.factor(obs_cambios_num))
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#Para ver el efecto de los cambios entre un tratamiento y otro y el motivo de egreso derivación, en que la distancia enrte un tratamiento a otro sea mayor a 60 días.
glm_60d <- glm(menor_60_dias_diff ~ motivoegreso_derivacion*obs_cambios_fac,
data=CONS_C1_df_dup_MAY_2020_prev_6b_glm_mas_de_un_trat, family="binomial")
library(finalfit)
#explanatory = c("age.factor*sex.factor", "obstruct.factor", "perfor.factor")
CONS_C1_df_dup_MAY_2020_prev_6b_glm_mas_de_un_trat %>%
dplyr::mutate(obs_cambios_fac= ff_label(obs_cambios_fac, "No. of Changes Between Datasets"),
motivoegreso_derivacion= ff_label(motivoegreso_derivacion, "Cause of Discharge (Referral=1)"),
menor_60_dias_diff= ff_label(menor_60_dias_diff, "<= 60 days of difference between next treatment"))%>%
ff_interaction(motivoegreso_derivacion, obs_cambios_fac) %>%
finalfit("menor_60_dias_diff", "motivoegreso_derivacion__obs_cambios_fac") -> t
Waiting for profiling to be done...
Waiting for profiling to be done...
knitr::kable(t,format = "html", format.args = list(decimal.mark = ".", big.mark = ","),
caption="Table 7. Summary Table for Difference Between Treatments",
align =rep('c', 101)) %>%
kableExtra::kable_styling(bootstrap_options = c("striped", "hover"),font_size = 8) %>%
kableExtra::scroll_box(width = "100%", height = "350px")
| Dependent: <= 60 days of difference between next treatment | 0 | 1 | OR (univariable) | OR (multivariable) | |
|---|---|---|---|---|---|
| Cause of Discharge (Referral=1):No. of Changes Between Datasets | 0|0 | 6853 (87.4) | 989 (12.6) |
|
|
| 0|1 | 4281 (84.5) | 784 (15.5) | 1.27 (1.15-1.40, p<0.001) | 1.27 (1.15-1.40, p<0.001) | |
| 0|2 | 5061 (80.4) | 1236 (19.6) | 1.69 (1.54-1.85, p<0.001) | 1.69 (1.54-1.85, p<0.001) | |
| 0|3 | 1890 (77.5) | 550 (22.5) | 2.02 (1.79-2.26, p<0.001) | 2.02 (1.79-2.26, p<0.001) | |
| 0|4 | 143 (79.9) | 36 (20.1) | 1.74 (1.19-2.50, p=0.003) | 1.74 (1.19-2.50, p=0.003) | |
| 1|0 | 825 (77.6) | 238 (22.4) | 2.00 (1.70-2.34, p<0.001) | 2.00 (1.70-2.34, p<0.001) | |
| 1|1 | 651 (32.4) | 1360 (67.6) | 14.48 (12.91-16.24, p<0.001) | 14.48 (12.91-16.24, p<0.001) | |
| 1|2 | 907 (19.4) | 3760 (80.6) | 28.73 (26.04-31.72, p<0.001) | 28.73 (26.04-31.72, p<0.001) | |
| 1|3 | 441 (22.4) | 1524 (77.6) | 23.95 (21.15-27.16, p<0.001) | 23.95 (21.15-27.16, p<0.001) | |
| 1|4 | 61 (44.5) | 76 (55.5) | 8.63 (6.13-12.21, p<0.001) | 8.63 (6.13-12.21, p<0.001) |
In the following figure, we show the marginal effects on the probability of having less or equal than 60 days of difference between the next entry, depending on cause of discharge (referral) and the number of changes in the characteristics of treatments with the next entry.
#
library("effects")
#Effect(focal.predictors = "diff_bet_treat",polrMod)
#plot(Effect(focal.predictors = "motivoegreso_derivacion",polrMod))
plot(Effect(focal.predictors = c("obs_cambios_fac", "motivoegreso_derivacion"),glm_60d),
ylab= "Probability of <=60 days of \ndiff. w/ next treatment",
xlab="No. of Changes in the Treatment Characteristics",
main=NULL,
#esto si se quiere dejar todos los niveles juntos, y no hacer gráficos por separado
rug = FALSE,
style="stacked")
library(lsmeans)
refR <- lsmeans(glm_60d, specs = c("motivoegreso_derivacion","obs_cambios_fac"))
ref_dfR <- as.data.frame(cbind(summary(refR)[1:2],exp(summary(refR)[,c(3,6,7)])))
g4R <- ggplot(ref_dfR, aes(x=obs_cambios_fac, y=lsmean,group=motivoegreso_derivacion, colour=motivoegreso_derivacion))+
geom_errorbar(aes(ymin=asymp.LCL, ymax=asymp.UCL), width=.1,position=position_dodge(0.1), size=1) +
geom_line(position=position_dodge(0.1), size=.5)+
geom_point(position=position_dodge(0.1), size=2)+
xlab("No. of Changes in the Treatment Characteristics")+
ylab("Odds Ratio (OR) of <=60 days of \ndiff. w/ next entry")+
sjPlot::theme_sjplot2() +
geom_rect_interactive(alpha = 0.1, xmin=.1, xmax=.1, ymin=.1,ymax=.1) +
# Remove plot elements added by geom_rect_interactive
theme(legend.position="bottom")+
guides(color=guide_legend(ncol=4,name = "Cause of Discharge"))+
labs(color="Cause of Discharge")+
scale_colour_brewer(palette = "Set1",labels=c("Other Causes", "Referral"))+
theme(legend.title = element_blank())
#theme(axis.text = element_blank(), axis.ticks = element_blank())
ggiraph(code = print(g4R))
Figure 9. Interactive Effects on Odds of having <=60 days of difference with the previous entry
#The lsmeans statement estimates least squares means, or predicted population margins, which are the expected values (means) of the outcome in a population where the levels of all class variables are balanced and averaged over the effects of the continuous covariates. We can estimate these means at each level of categorical age and across female.
Figure 9 tend show that there was more chance to had a minor difference with the next treatment, if the cause of discharge was a referral and a user had among 2 or 3 changes in the characteristics of the treatment in the following entry. However, must note that referrals had more chance than other causes of discharge by itself, regardless of the number of changes,
CONS_C1_df_dup_MAY_2020_prev_6b%>%
dplyr::left_join(CONS_C1_df_dup_MAY_2020_prev_6b_glm_mas_de_un_trat[c("row", "menor_60_dias_diff","diff_bet_treat","id_centro_sig_trat","tipo_plan_sig_trat", "tipo_programa_sig_trat","senda_sig_trat","motivoegreso_derivacion","obs_cambios",
"obs_cambios_ninguno","obs_cambios_num","obs_cambios_fac")], by="row")%>%
assign("CONS_C1_df_dup_JUN_2020",., envir = .GlobalEnv)
metadata(CONS_C1_df_dup_JUN_2020)$name <- "Agreement 1 SENDA"
metadata(CONS_C1_df_dup_JUN_2020)$description <- "Information About Agreement 1 of SENDA and MINSAL"
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
CONS_C1_df_dup_JUN_2020<-
CONS_C1_df_dup_JUN_2020 %>% dplyr::mutate(dg_trs_psiq_cie_10_or= recode(as.character(dg_trs_psiq_cie_10_or),
'En estudio' ='En estudio(NA)',
'Esquizofrenia, trastorno esquizotípico y trastornos de ideas delirantes' ='Esquizofrenia, trastorno esquizotípico y trastornos de ideas delirantes(F20-29)',
'Retraso Mental' ='Retraso Mental(F70-79)',
'Sin trastorno' ='Sin trastorno(NA)',
'Trastornos de la conducta alimentaria ' ='Trastornos de la conducta alimentaria(F50)',
'Trastornos de la personalidad y del comportamiento del adulto' ='Trastornos de la personalidad y del comportamiento del adulto(F60-69)',
'Trastornos de los hábitos y del control de los impulsos' ='Trastornos de los hábitos y del control de los impulsos(F63)',
'Trastornos del comportamiento asociados a disfunciones fisiológicas y a factores somáticos' ='Trastornos del comportamiento asociados a disfunciones fisiológicas y a factores somáticos(F50-59)',
'Trastornos del Desarrollo Psicológico' ='Trastornos del Desarrollo Psicológico(F80-89)',
'Trastornos del humor (afectivos).' ='Trastornos del humor (afectivos) (F30-39)',
'Trastornos mentales orgánicos, incluidos los sintomáticos' ='Trastornos mentales orgánicos, incluidos los sintomáticos(F00-09)',
'Trastornos neuróticos, secundarios a situaciones estresantes y somatomorfos' ='Trastornos neuróticos, secundarios a situaciones estresantes y somatomorfos(F40-49)',
'Trs. del comportamiento y de las emociones de comienzo habitual en la infancia y adolescencia' ='Trs. del comportamiento y de las emociones de comienzo habitual en la infancia y adolescencia(F90-98)'))
CONS_C1_df_dup_JUN_2020<-
CONS_C1_df_dup_JUN_2020 %>% dplyr::mutate(x2_dg_trs_psiq_cie_10_or= recode(as.character(x2_dg_trs_psiq_cie_10_or),
'En estudio' ='En estudio(NA)',
'Esquizofrenia, trastorno esquizotípico y trastornos de ideas delirantes' ='Esquizofrenia, trastorno esquizotípico y trastornos de ideas delirantes(F20-29)',
'Retraso Mental' ='Retraso Mental(F70-79)',
'Sin trastorno' ='Sin trastorno(NA)',
'Trastornos de la conducta alimentaria ' ='Trastornos de la conducta alimentaria(F50)',
'Trastornos de la personalidad y del comportamiento del adulto' ='Trastornos de la personalidad y del comportamiento del adulto(F60-69)',
'Trastornos de los hábitos y del control de los impulsos' ='Trastornos de los hábitos y del control de los impulsos(F63)',
'Trastornos del comportamiento asociados a disfunciones fisiológicas y a factores somáticos' ='Trastornos del comportamiento asociados a disfunciones fisiológicas y a factores somáticos(F50-59)',
'Trastornos del Desarrollo Psicológico' ='Trastornos del Desarrollo Psicológico(F80-89)',
'Trastornos del humor (afectivos).' ='Trastornos del humor (afectivos) (F30-39)',
'Trastornos mentales orgánicos, incluidos los sintomáticos' ='Trastornos mentales orgánicos, incluidos los sintomáticos(F00-09)',
'Trastornos neuróticos, secundarios a situaciones estresantes y somatomorfos' ='Trastornos neuróticos, secundarios a situaciones estresantes y somatomorfos(F40-49)',
'Trs. del comportamiento y de las emociones de comienzo habitual en la infancia y adolescencia' ='Trs. del comportamiento y de las emociones de comienzo habitual en la infancia y adolescencia(F90-98)'))
CONS_C1_df_dup_JUN_2020<-
CONS_C1_df_dup_JUN_2020 %>% dplyr::mutate(x3_dg_trs_psiq_cie_10_or= recode(as.character(x3_dg_trs_psiq_cie_10_or),
'En estudio' ='En estudio(NA)',
'Esquizofrenia, trastorno esquizotípico y trastornos de ideas delirantes' ='Esquizofrenia, trastorno esquizotípico y trastornos de ideas delirantes(F20-29)',
'Retraso Mental' ='Retraso Mental(F70-79)',
'Sin trastorno' ='Sin trastorno(NA)',
'Trastornos de la conducta alimentaria ' ='Trastornos de la conducta alimentaria(F50)',
'Trastornos de la personalidad y del comportamiento del adulto' ='Trastornos de la personalidad y del comportamiento del adulto(F60-69)',
'Trastornos de los hábitos y del control de los impulsos' ='Trastornos de los hábitos y del control de los impulsos(F63)',
'Trastornos del comportamiento asociados a disfunciones fisiológicas y a factores somáticos' ='Trastornos del comportamiento asociados a disfunciones fisiológicas y a factores somáticos(F50-59)',
'Trastornos del Desarrollo Psicológico' ='Trastornos del Desarrollo Psicológico(F80-89)',
'Trastornos del humor (afectivos).' ='Trastornos del humor (afectivos) (F30-39)',
'Trastornos mentales orgánicos, incluidos los sintomáticos' ='Trastornos mentales orgánicos, incluidos los sintomáticos(F00-09)',
'Trastornos neuróticos, secundarios a situaciones estresantes y somatomorfos' ='Trastornos neuróticos, secundarios a situaciones estresantes y somatomorfos(F40-49)',
'Trs. del comportamiento y de las emociones de comienzo habitual en la infancia y adolescencia' ='Trs. del comportamiento y de las emociones de comienzo habitual en la infancia y adolescencia(F90-98)'))
CONS_C1_df_dup_JUN_2020<-
CONS_C1_df_dup_JUN_2020 %>% dplyr::mutate(dg_trs_psiq_sub_cie_10_or= recode(as.character(dg_trs_psiq_sub_cie_10_or),
'Abuso de sustancias que no producen dependencia' ='Abuso de sustancias que no producen dependencia(F55X)',
'Delirium no inducido por alcohol u otras sustancias psicotropas' ='Delirium no inducido por alcohol u otras sustancias psicotropas(F059)',
'Demencia en enfermedades clasificadas en otro lugar' ='Demencia en enfermedades clasificadas en otro lugar(F02)',
'Demencia sin especificación' ='Demencia sin especificación(F03)',
'Demencia vascular' ='Demencia vascular(F01)',
'Episodios depresivos' ='Episodios depresivos(F32)',
'Factores psicológicos y del comportamiento en trastornos o enfermedades clasificados en otro lugar' ='Factores psicológicos y del comportamiento en trastornos o enfermedades clasificados en otro lugar(F54)',
'Otros trastornos de ansiedad' ='Otros trastornos de ansiedad(F41)',
'Otros trastornos de la personalidad y del comportamiento del adulto' ='Otros trastornos de la personalidad y del comportamiento del adulto(F68)',
'Otros trastornos de las emociones y del comportamiento de comienzo habitual en la infancia y adolescencia' ='Otros trastornos de las emociones y del comportamiento de comienzo habitual en la infancia y adolescencia(F98)',
'Otros trastornos del desarrollo psicológico' ='Otros trastornos del desarrollo psicológico(F88)',
'Otros trastornos del humor (afectivos)' ='Otros trastornos del humor (afectivos)(F38)',
'Otros trastornos mentales debidos a lesión o disfunción cerebral o a enfermedad somática' ='Otros trastornos mentales debidos a lesión o disfunción cerebral o a enfermedad somática(F06)',
'Otros trastornos neuróticos' ='Otros trastornos neuróticos(F48)',
'Otros trastornos psicóticos no orgánicos' ='Otros trastornos psicóticos no orgánicos(F28)',
'Psicosis no orgánica sin especificación' ='Psicosis no orgánica sin especificación(F29)',
'Reacciones a estrés grave y trastornos de adaptación' ='Reacciones a estrés grave y trastornos de adaptación(F43)',
'Síndrome amnésico orgánico no inducido por alcohol u otras sustancias psicotropas' ='Síndrome amnésico orgánico no inducido por alcohol u otras sustancias psicotropas(F04)',
'Transformación persistente de la personalidad no atribuible a lesión o enfermedad cerebral' ='Transformación persistente de la personalidad no atribuible a lesión o enfermedad cerebral(F62)',
'Trastorno bipolar' ='Trastorno bipolar(F31)',
'Trastorno de ideas delirantes inducidas' ='Trastorno de ideas delirantes inducidas(F24)',
'Trastorno de la personalidad y del comportamiento del adulto sin especificación' ='Trastorno de la personalidad y del comportamiento del adulto sin especificación(F69)',
'Trastorno del desarrollo psicológico sin especificación' ='Trastorno del desarrollo psicológico sin especificación(F89)',
'Trastorno depresivo recurrente' ='Trastorno depresivo recurrente(F33)',
'Trastorno específico del desarrollo mixto' ='Trastorno específico del desarrollo mixto(F83)',
'Trastorno esquizotípico.' ='Trastorno esquizotípico.(F21)',
'Trastorno generalizado del desarrollo sin especificación' ='Trastorno generalizado del desarrollo sin especificación(F849)',
'Trastorno mental orgánico o sintomático sin especificación' ='Trastorno mental orgánico o sintomático sin especificación(F09)',
'Trastorno mental sin especificación' ='Trastorno mental sin especificación(F99)',
'Trastorno obsesivo-compulsivo' ='Trastorno obsesivo-compulsivo(F42)',
'Trastornos de ideas delirantes persistentes.' ='Trastornos de ideas delirantes persistentes.(F22)',
'Trastornos de la identidad sexual' ='Trastornos de la identidad sexual(F64)',
'Trastornos de la inclinación sexual' ='Trastornos de la inclinación sexual(F65)',
'Trastornos de la personalidad y del comportamiento debidos a enfermedad, lesión o disfunción cerebral' ='Trastornos de la personalidad y del comportamiento debidos a enfermedad, lesión o disfunción cerebral(F07)',
'Trastornos de las emociones de comienzo habitual en la infancia' ='Trastornos de las emociones de comienzo habitual en la infancia(F93)',
'Trastornos de los hábitos y del control de los impulsos' ='Trastornos de los hábitos y del control de los impulsos(F63)',
'Trastornos del comportamiento asociados a disfunciones fisiológicas y a factores somáticos sin especificación' ='Trastornos del comportamiento asociados a disfunciones fisiológicas y a factores somáticos sin especificación(F59)',
'Trastornos del comportamiento social de comienzo habitual en la infancia y adolescencia' ='Trastornos del comportamiento social de comienzo habitual en la infancia y adolescencia(F94)',
'Trastornos del humor (afectivos) persistentes' ='Trastornos del humor (afectivos) persistentes(F34)',
'Trastornos disociales' ='Trastornos disociales(F91)',
'Trastornos disociales y de las emociones mixtos' ='Trastornos disociales y de las emociones mixtos(F92)',
'Trastornos disociativos (de conversión)' ='Trastornos disociativos (de conversión)(F44)',
'Trastornos específicos de la personalidad' ='Trastornos específicos de la personalidad(F60)',
'Trastornos específicos del desarrollo del aprendizaje escolar' ='Trastornos específicos del desarrollo del aprendizaje escolar(F81)',
'Trastornos esquizoafectivos' ='Trastornos esquizoafectivos(F25)',
'Trastornos generalizados del desarrollo' ='Trastornos generalizados del desarrollo(F84)',
'Trastornos Hipercineticos' ='Trastornos Hipercineticos(F90)',
'Trastornos mentales y del comportamiento en el puerperio no clasificados en otro lugar' ='Trastornos mentales y del comportamiento en el puerperio no clasificados en otro lugar(F53)',
'Trastornos mixtos y otros trastornos de la personalidad' ='Trastornos mixtos y otros trastornos de la personalidad(F61)',
'Trastornos no orgánicos del sueño' ='Trastornos no orgánicos del sueño(F51)',
'Trastornos psicológicos y del comportamiento del desarrollo y orientación sexuales' ='Trastornos psicológicos y del comportamiento del desarrollo y orientación sexuales(F66)',
'Trastornos psicóticos agudos y transitorios' ='Trastornos psicóticos agudos y transitorios(F23)',
'Trastornos somatomorfos' ='Trastornos somatomorfos(F45)'))
CONS_C1_df_dup_JUN_2020<-
CONS_C1_df_dup_JUN_2020 %>% dplyr::mutate(x2_dg_trs_psiq_sub_cie_10_or= recode(as.character(x2_dg_trs_psiq_sub_cie_10_or),
'Abuso de sustancias que no producen dependencia' ='Abuso de sustancias que no producen dependencia(F55X)',
'Delirium no inducido por alcohol u otras sustancias psicotropas' ='Delirium no inducido por alcohol u otras sustancias psicotropas(F059)',
'Demencia en enfermedades clasificadas en otro lugar' ='Demencia en enfermedades clasificadas en otro lugar(F02)',
'Demencia sin especificación' ='Demencia sin especificación(F03)',
'Demencia vascular' ='Demencia vascular(F01)',
'Episodios depresivos' ='Episodios depresivos(F32)',
'Factores psicológicos y del comportamiento en trastornos o enfermedades clasificados en otro lugar' ='Factores psicológicos y del comportamiento en trastornos o enfermedades clasificados en otro lugar(F54)',
'Otros trastornos de ansiedad' ='Otros trastornos de ansiedad(F41)',
'Otros trastornos de la personalidad y del comportamiento del adulto' ='Otros trastornos de la personalidad y del comportamiento del adulto(F68)',
'Otros trastornos de las emociones y del comportamiento de comienzo habitual en la infancia y adolescencia' ='Otros trastornos de las emociones y del comportamiento de comienzo habitual en la infancia y adolescencia(F98)',
'Otros trastornos del desarrollo psicológico' ='Otros trastornos del desarrollo psicológico(F88)',
'Otros trastornos del humor (afectivos)' ='Otros trastornos del humor (afectivos)(F38)',
'Otros trastornos mentales debidos a lesión o disfunción cerebral o a enfermedad somática' ='Otros trastornos mentales debidos a lesión o disfunción cerebral o a enfermedad somática(F06)',
'Otros trastornos neuróticos' ='Otros trastornos neuróticos(F48)',
'Otros trastornos psicóticos no orgánicos' ='Otros trastornos psicóticos no orgánicos(F28)',
'Psicosis no orgánica sin especificación' ='Psicosis no orgánica sin especificación(F29)',
'Reacciones a estrés grave y trastornos de adaptación' ='Reacciones a estrés grave y trastornos de adaptación(F43)',
'Síndrome amnésico orgánico no inducido por alcohol u otras sustancias psicotropas' ='Síndrome amnésico orgánico no inducido por alcohol u otras sustancias psicotropas(F04)',
'Transformación persistente de la personalidad no atribuible a lesión o enfermedad cerebral' ='Transformación persistente de la personalidad no atribuible a lesión o enfermedad cerebral(F62)',
'Trastorno bipolar' ='Trastorno bipolar(F31)',
'Trastorno de ideas delirantes inducidas' ='Trastorno de ideas delirantes inducidas(F24)',
'Trastorno de la personalidad y del comportamiento del adulto sin especificación' ='Trastorno de la personalidad y del comportamiento del adulto sin especificación(F69)',
'Trastorno del desarrollo psicológico sin especificación' ='Trastorno del desarrollo psicológico sin especificación(F89)',
'Trastorno depresivo recurrente' ='Trastorno depresivo recurrente(F33)',
'Trastorno específico del desarrollo mixto' ='Trastorno específico del desarrollo mixto(F83)',
'Trastorno esquizotípico.' ='Trastorno esquizotípico.(F21)',
'Trastorno generalizado del desarrollo sin especificación' ='Trastorno generalizado del desarrollo sin especificación(F849)',
'Trastorno mental orgánico o sintomático sin especificación' ='Trastorno mental orgánico o sintomático sin especificación(F09)',
'Trastorno mental sin especificación' ='Trastorno mental sin especificación(F99)',
'Trastorno obsesivo-compulsivo' ='Trastorno obsesivo-compulsivo(F42)',
'Trastornos de ideas delirantes persistentes.' ='Trastornos de ideas delirantes persistentes.(F22)',
'Trastornos de la identidad sexual' ='Trastornos de la identidad sexual(F64)',
'Trastornos de la inclinación sexual' ='Trastornos de la inclinación sexual(F65)',
'Trastornos de la personalidad y del comportamiento debidos a enfermedad, lesión o disfunción cerebral' ='Trastornos de la personalidad y del comportamiento debidos a enfermedad, lesión o disfunción cerebral(F07)',
'Trastornos de las emociones de comienzo habitual en la infancia' ='Trastornos de las emociones de comienzo habitual en la infancia(F93)',
'Trastornos de los hábitos y del control de los impulsos' ='Trastornos de los hábitos y del control de los impulsos(F63)',
'Trastornos del comportamiento asociados a disfunciones fisiológicas y a factores somáticos sin especificación' ='Trastornos del comportamiento asociados a disfunciones fisiológicas y a factores somáticos sin especificación(F59)',
'Trastornos del comportamiento social de comienzo habitual en la infancia y adolescencia' ='Trastornos del comportamiento social de comienzo habitual en la infancia y adolescencia(F94)',
'Trastornos del humor (afectivos) persistentes' ='Trastornos del humor (afectivos) persistentes(F34)',
'Trastornos disociales' ='Trastornos disociales(F91)',
'Trastornos disociales y de las emociones mixtos' ='Trastornos disociales y de las emociones mixtos(F92)',
'Trastornos disociativos (de conversión)' ='Trastornos disociativos (de conversión)(F44)',
'Trastornos específicos de la personalidad' ='Trastornos específicos de la personalidad(F60)',
'Trastornos específicos del desarrollo del aprendizaje escolar' ='Trastornos específicos del desarrollo del aprendizaje escolar(F81)',
'Trastornos esquizoafectivos' ='Trastornos esquizoafectivos(F25)',
'Trastornos generalizados del desarrollo' ='Trastornos generalizados del desarrollo(F84)',
'Trastornos Hipercineticos' ='Trastornos Hipercineticos(F90)',
'Trastornos mentales y del comportamiento en el puerperio no clasificados en otro lugar' ='Trastornos mentales y del comportamiento en el puerperio no clasificados en otro lugar(F53)',
'Trastornos mixtos y otros trastornos de la personalidad' ='Trastornos mixtos y otros trastornos de la personalidad(F61)',
'Trastornos no orgánicos del sueño' ='Trastornos no orgánicos del sueño(F51)',
'Trastornos psicológicos y del comportamiento del desarrollo y orientación sexuales' ='Trastornos psicológicos y del comportamiento del desarrollo y orientación sexuales(F66)',
'Trastornos psicóticos agudos y transitorios' ='Trastornos psicóticos agudos y transitorios(F23)',
'Trastornos somatomorfos' ='Trastornos somatomorfos(F45)'))
CONS_C1_df_dup_JUN_2020<-
CONS_C1_df_dup_JUN_2020 %>% dplyr::mutate(x3_dg_trs_psiq_sub_cie_10_or= recode(as.character(x3_dg_trs_psiq_sub_cie_10_or),
'Abuso de sustancias que no producen dependencia' ='Abuso de sustancias que no producen dependencia(F55X)',
'Delirium no inducido por alcohol u otras sustancias psicotropas' ='Delirium no inducido por alcohol u otras sustancias psicotropas(F059)',
'Demencia en enfermedades clasificadas en otro lugar' ='Demencia en enfermedades clasificadas en otro lugar(F02)',
'Demencia sin especificación' ='Demencia sin especificación(F03)',
'Demencia vascular' ='Demencia vascular(F01)',
'Episodios depresivos' ='Episodios depresivos(F32)',
'Factores psicológicos y del comportamiento en trastornos o enfermedades clasificados en otro lugar' ='Factores psicológicos y del comportamiento en trastornos o enfermedades clasificados en otro lugar(F54)',
'Otros trastornos de ansiedad' ='Otros trastornos de ansiedad(F41)',
'Otros trastornos de la personalidad y del comportamiento del adulto' ='Otros trastornos de la personalidad y del comportamiento del adulto(F68)',
'Otros trastornos de las emociones y del comportamiento de comienzo habitual en la infancia y adolescencia' ='Otros trastornos de las emociones y del comportamiento de comienzo habitual en la infancia y adolescencia(F98)',
'Otros trastornos del desarrollo psicológico' ='Otros trastornos del desarrollo psicológico(F88)',
'Otros trastornos del humor (afectivos)' ='Otros trastornos del humor (afectivos)(F38)',
'Otros trastornos mentales debidos a lesión o disfunción cerebral o a enfermedad somática' ='Otros trastornos mentales debidos a lesión o disfunción cerebral o a enfermedad somática(F06)',
'Otros trastornos neuróticos' ='Otros trastornos neuróticos(F48)',
'Otros trastornos psicóticos no orgánicos' ='Otros trastornos psicóticos no orgánicos(F28)',
'Psicosis no orgánica sin especificación' ='Psicosis no orgánica sin especificación(F29)',
'Reacciones a estrés grave y trastornos de adaptación' ='Reacciones a estrés grave y trastornos de adaptación(F43)',
'Síndrome amnésico orgánico no inducido por alcohol u otras sustancias psicotropas' ='Síndrome amnésico orgánico no inducido por alcohol u otras sustancias psicotropas(F04)',
'Transformación persistente de la personalidad no atribuible a lesión o enfermedad cerebral' ='Transformación persistente de la personalidad no atribuible a lesión o enfermedad cerebral(F62)',
'Trastorno bipolar' ='Trastorno bipolar(F31)',
'Trastorno de ideas delirantes inducidas' ='Trastorno de ideas delirantes inducidas(F24)',
'Trastorno de la personalidad y del comportamiento del adulto sin especificación' ='Trastorno de la personalidad y del comportamiento del adulto sin especificación(F69)',
'Trastorno del desarrollo psicológico sin especificación' ='Trastorno del desarrollo psicológico sin especificación(F89)',
'Trastorno depresivo recurrente' ='Trastorno depresivo recurrente(F33)',
'Trastorno específico del desarrollo mixto' ='Trastorno específico del desarrollo mixto(F83)',
'Trastorno esquizotípico.' ='Trastorno esquizotípico.(F21)',
'Trastorno generalizado del desarrollo sin especificación' ='Trastorno generalizado del desarrollo sin especificación(F849)',
'Trastorno mental orgánico o sintomático sin especificación' ='Trastorno mental orgánico o sintomático sin especificación(F09)',
'Trastorno mental sin especificación' ='Trastorno mental sin especificación(F99)',
'Trastorno obsesivo-compulsivo' ='Trastorno obsesivo-compulsivo(F42)',
'Trastornos de ideas delirantes persistentes.' ='Trastornos de ideas delirantes persistentes.(F22)',
'Trastornos de la identidad sexual' ='Trastornos de la identidad sexual(F64)',
'Trastornos de la inclinación sexual' ='Trastornos de la inclinación sexual(F65)',
'Trastornos de la personalidad y del comportamiento debidos a enfermedad, lesión o disfunción cerebral' ='Trastornos de la personalidad y del comportamiento debidos a enfermedad, lesión o disfunción cerebral(F07)',
'Trastornos de las emociones de comienzo habitual en la infancia' ='Trastornos de las emociones de comienzo habitual en la infancia(F93)',
'Trastornos de los hábitos y del control de los impulsos' ='Trastornos de los hábitos y del control de los impulsos(F63)',
'Trastornos del comportamiento asociados a disfunciones fisiológicas y a factores somáticos sin especificación' ='Trastornos del comportamiento asociados a disfunciones fisiológicas y a factores somáticos sin especificación(F59)',
'Trastornos del comportamiento social de comienzo habitual en la infancia y adolescencia' ='Trastornos del comportamiento social de comienzo habitual en la infancia y adolescencia(F94)',
'Trastornos del humor (afectivos) persistentes' ='Trastornos del humor (afectivos) persistentes(F34)',
'Trastornos disociales' ='Trastornos disociales(F91)',
'Trastornos disociales y de las emociones mixtos' ='Trastornos disociales y de las emociones mixtos(F92)',
'Trastornos disociativos (de conversión)' ='Trastornos disociativos (de conversión)(F44)',
'Trastornos específicos de la personalidad' ='Trastornos específicos de la personalidad(F60)',
'Trastornos específicos del desarrollo del aprendizaje escolar' ='Trastornos específicos del desarrollo del aprendizaje escolar(F81)',
'Trastornos esquizoafectivos' ='Trastornos esquizoafectivos(F25)',
'Trastornos generalizados del desarrollo' ='Trastornos generalizados del desarrollo(F84)',
'Trastornos Hipercineticos' ='Trastornos Hipercineticos(F90)',
'Trastornos mentales y del comportamiento en el puerperio no clasificados en otro lugar' ='Trastornos mentales y del comportamiento en el puerperio no clasificados en otro lugar(F53)',
'Trastornos mixtos y otros trastornos de la personalidad' ='Trastornos mixtos y otros trastornos de la personalidad(F61)',
'Trastornos no orgánicos del sueño' ='Trastornos no orgánicos del sueño(F51)',
'Trastornos psicológicos y del comportamiento del desarrollo y orientación sexuales' ='Trastornos psicológicos y del comportamiento del desarrollo y orientación sexuales(F66)',
'Trastornos psicóticos agudos y transitorios' ='Trastornos psicóticos agudos y transitorios(F23)',
'Trastornos somatomorfos' ='Trastornos somatomorfos(F45)'))
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
codebook::var_label(CONS_C1_df_dup_JUN_2020) <- list(
row= 'Numerador de los eventos presentes en la Base de Datos/Events in the Dataset',
table= 'Origen de los Datos (de los archivos por año)/Source of Data (of files per year)',
hash_key= 'Codificación del RUT/Masked Identifier (RUT)',
ano_bd= 'Año de la Base de Datos/Year of the Dataset (Source)',
id= 'Codigo Identificación de SENDA/SENDAs ID',
nombre_centro= 'Nombre del Centro de Tratamiento/Treatment Center',
tipo_centro= 'Tipo de Centro/Type of Center',
region_del_centro= '(original, Recodificado en nombre_region)/',
servicio_de_salud= 'Servicio de Salud/Health Service',
tipo_de_programa= '(original, Recodificado en tipo_de_programa_2)/',
tipo_de_plan= '(original, Recodificado en tipo_de_plan_2)/',
senda= 'SENDA/SENDA',
dias_trat= 'Días de Tratamiento/Days of Treatment',
nmesesentratamiento= 'Número de Meses en Tratamiento/Number of Months in Treatment',
dias_en_senda= 'Días en SENDA/Days in SENDA',
n_meses_en_senda= 'Número de Meses en SENDA/Number of Months in SENDA',
sexo= '(original, Recodificado en sexo_2)/',
edad= 'Edad (número entero)/Age (In years, Discrete Number)',
nombre_usuario= 'Nombre del Usuario (OCULTO y no accesible)/Name of the User (Not Accessible)',
comuna_residencia= '(original, Recodificado en comuna_residencia_cod)/',
origen_de_ingreso= '(original, Recodificado en origen_ingreso)/',
pais_nacimiento= 'País de Nacimiento/Country of Birth',
nacionalidad= 'Nacionalidad/Nationality',
etnia= '(original, recodificado en etnia_cor)/',
estado_conyugal= '(original, Recodificado en estado_conyugal_2)/',
numero_de_hijos= 'Número de Hijos/Number of Children',
num_hijos_ing_trat_res= 'Número de Hijos para Ingreso a Tratamiento Residencial/Number of Children to Residential Treatment',
parentesco_con_el_jefe_de_hogar= '(Sólo presenta valores perdidos)/',
num_trat_ant= 'Número de Tratamientos Anteriores/Number of Previous Treatments',
fecha_ultimo_tratamiento= 'Fecha del Último Tratamiento/Date of the Last Treatment',
sustancia_de_inicio= '(original, Recodificado en sus_ini)/',
edad_inicio_consumo= '(original, Recodificado en edad_ini_cons)/',
x_se_trata_mujer_emb= 'Mujer Embarazada al Ingreso/Pregnant at Admission',
escolaridad_ultimo_ano_cursado= '(original, Recodificado en escolaridad)/',
condicion_ocupacional= '(original, Recodificado en estatus_ocupacional)/',
categoria_ocupacional= '(original, Recodificado en cat_ocupacional)/',
rubro_trabaja= 'Rubro de Trabajo/Area of Work',
con_quien_vive= 'Persona con la que vive el Usuario/People that Share Household with the User',
tipo_de_vivienda= 'Tipo de Vivienda/Type of Housing',
tenencia_de_la_vivienda= 'Tenencia de la Vivienda/Tenure status of Households',
sustancia_principal= '(original, Recodificado en sus_principal)/',
`otras_sustancias_nº1`= '(original, Recodificado en otras_sus1)/',
`otras_sustancias_nº2`= '(original, Recodificado en otras_sus2)/',
`otras_sustancias_nº3`= '(original, Recodificado en otras_sus3)/',
freq_cons_sus_prin_original= '(original, Recodificado en freq_cons_sus_prin)/',
edad_inicio_sustancia_principal= '(original, Recodificado en edad_ini_sus_prin)/',
via_adm_sus_prin_original= '(original, Recodificado en via_adm_sus_prin)/',
dg_trs_cons_sus_or= 'Diagnósico de Trastorno por Consumo de Sustancias/Diagnosed of Substance Use Disorder',
dg_trs_psiq_dsm_iv_or= 'Diagnóstico de Trastorno Psiquiátrico, Criterios DSM IV/Diagnosis of Psychiatric Disorders, DSM-IV criteria',
dg_trs_psiq_sub_dsm_iv_or= 'Diagnóstico de Trastorno Psiquiátrico, Criterios DSM IV (Subclasificacion)/Diagnosis of Psychiatric Disorders, DSM-IV criteria (sub-classification)',
x2_dg_trs_psiq_dsm_iv_or= 'Diagnóstico de Trastorno Psiquiátrico, Criterios DSM IV (2)/Diagnosis of Psychiatric Disorders, DSM-IV criteria (2)',
x2_dg_trs_psiq_sub_dsm_iv_or= 'Diagnóstico de Trastorno Psiquiátrico, Criterios DSM IV (Subclasificacion) (2)/Diagnosis of Psychiatric Disorders, DSM-IV criteria (sub-classification) (2)',
x3_dg_trs_psiq_dsm_iv_or= 'Diagnóstico de Trastorno Psiquiátrico, Criterios DSM IV (3)/Diagnosis of Psychiatric Disorders, DSM-IV criteria (3)',
x3_dg_trs_psiq_sub_dsm_iv_or= 'Diagnóstico de Trastorno Psiquiátrico, Criterios DSM IV (Subclasificacion) (3)/Diagnosis of Psychiatric Disorders, DSM-IV criteria (sub-classification) (3)',
dg_trs_psiq_cie_10_or= 'Diagnóstico de Trastorno Psiquiátrico, Criterios CIE-10/Diagnosis of Psychiatric Disorders, CIE-10 criteria',
dg_trs_psiq_sub_cie_10_or= 'Diagnóstico de Trastorno Psiquiátrico, Criterios CIE-10 (Subclasificacion)/Diagnosis of Psychiatric Disorders, CIE-10 criteria (subclassification)',
x2_dg_trs_psiq_cie_10_or= 'Diagnóstico de Trastorno Psiquiátrico, Criterios CIE-10 (2)/Diagnosis of Psychiatric Disorders, CIE-10 criteria (2)',
x2_dg_trs_psiq_sub_cie_10_or= 'Diagnóstico de Trastorno Psiquiátrico, Criterios CIE-10 (Subclasificacion) (2)/Diagnosis of Psychiatric Disorders, CIE-10 criteria (subclassification) (2)',
x3_dg_trs_psiq_cie_10_or= 'Diagnóstico de Trastorno Psiquiátrico, Criterios CIE-10 (3)/Diagnosis of Psychiatric Disorders, CIE-10 criteria (3)',
x3_dg_trs_psiq_sub_cie_10_or= 'Diagnóstico de Trastorno Psiquiátrico, Criterios CIE-10 (Subclasificacion) (3)/Diagnosis of Psychiatric Disorders, CIE-10 criteria (subclassification) (3)',
diagnostico_trs_fisico= 'Diagnóstico de Trastorno Físico/Diagnosis of Physical Disorder',
otros_probl_at_sm_or= 'Otros Problemas de Atención Vinculados a Salud Mental/Other problems linked to Mental Health',
compromiso_biopsicosocial= 'Compromiso Biopsicosocial/Biopsychosocial Involvement',
dg_global_nec_int_soc_or= 'Diagnóstico Global de Necesidades de Integración Social (Al Ingreso)/Global Diagnosis of Social Integration (At Admission)',
dg_nec_int_soc_cap_hum_or= 'Diagnóstico de Necesidades de Integración Social en Capital Humano (Al Ingreso)/Global Diagnosis of Social Integration in Human Capital (At Admission)',
dg_nec_int_soc_cap_fis_or= 'Diagnóstico de Necesidades de Integración Social en Capital Físico (Al Ingreso)/Global Diagnosis of Social Integration in Physical Capital (At Admission)',
dg_nec_int_soc_cap_soc_or= 'Diagnóstico de Necesidades de Integración Social en Capital Social (Al Ingreso)/Global Diagnosis of Social Integration in Social Capital (At Admission)',
fech_ing= 'Fecha de Ingreso a Tratamiento/Date of Admission to Treatment',
fecha_ingreso_a_convenio_senda= 'Fecha de Ingreso a Convenio SENDA (aún no formateada como fecha)/Date of Admission to SENDA Agreement',
usuario_tribunal_trat_droga= 'Usuario de modalidad Tribunales de Tratamiento de Drogas/User of Drug Treatment Courts Modality',
consentimiento_informado= 'Consentimiento Informado/Informed Consent',
fech_egres= 'Fecha de Egreso de Tratamiento/Date of Discharge from Treatment',
motivodeegreso= 'Motivo de Egreso/Cause of Discharge',
tipo_centro_derivacion= 'Tipo de Centro al que el Usuario es Derivado/Type of Center of Derivation',
evaluacindelprocesoteraputico= 'Evaluación del Proceso Terapéutico/Evaluation of the Therapeutic Process',
eva_consumo= 'Evaluación al Egreso Respecto al Patrón de consumo/Evaluation at Discharge regarding to Consumption Pattern',
eva_fam= 'Evaluación al Egreso Respecto a Situación Familiar/Evaluation at Discharge regarding to Family Situation',
eva_relinterp= 'Evaluación al Egreso Respecto a Relaciones Interpersonales/Evaluation at Discharge regarding to Interpersonal Relations',
eva_ocupacion= 'Evaluación al Egreso Respecto a Situación Ocupacional/Evaluation at Discharge regarding to Occupational Status',
eva_sm= 'Evaluación al Egreso Respecto a Salud Mental/Evaluation at Discharge regarding to Mental Health',
eva_fisica= 'Evaluación al Egreso Respecto a Salud Física/Evaluation at Discharge regarding to Physical Health',
eva_transgnorma= 'Evaluación al Egreso Respecto a Trasgresión a la Norma Social/Evaluation at Discharge regarding to Transgression to the Norm',
dg_trs_psiq_cie_10_egres_or= '(Sólo presenta valores perdidos)/',
dg_global_nec_int_soc_or_1= 'Diagnóstico Global de Necesidades de Integración Social (Al Egreso)/Global Diagnosis of Social Integration (At Discharge)',
dg_nec_int_soc_cap_hum_or_1= 'Diagnóstico de Necesidades de Integración Social en Capital Humano (Al Egreso)/Global Diagnosis of Social Integration in Human Capital (At Discharge)',
dg_nec_int_soc_cap_fis_or_1= 'Diagnóstico de Necesidades de Integración Social en Capital Físico (Al Egreso)/Global Diagnosis of Social Integration in Physical Capital (At Discharge)',
dg_nec_int_soc_cap_soc_or_1= 'Diagnóstico de Necesidades de Integración Social en Capital Social (Al Egreso)/Global Diagnosis of Social Integration in Social Capital (At Discharge)',
tiene_menores_de_edad_a_cargo= 'Menores de Edad A Cargo/Minor Dependants',
mot_egres_alt_adm_or= 'Motivo de Egreso Alta Administrativa/Cause of Administrative Discharge',
consorcio= 'Sociedades de Tratamiento Servicios de Salud- Fundaciones- entre otras entidades encargadas de los centros/Consortium',
id_centro= 'ID de Centro/Center ID',
ha_estado_embarazada_egreso= '¿Ha estado embarazada? (al Egreso)/Have you been Pregnant (at Discharge)',
identidad_de_genero= 'Identidad de Género/Gender Identity',
discapacidad= 'Presenta Discapacidad/Disability',
hash_rut_completo= 'HASH alternativo, en el escenario en que se asuma que el individuo al que se le codificó el RUT presente mayor edad/Alternative HASH-Key',
opcion_discapacidad= 'Origen de Discapacidad/Cause of Disability',
sexo_2= 'Sexo Usuario/Sex of User',
embarazo= 'Embarazo/Pregnant',
tipo_de_plan_2= 'Tipo de Plan/Type of Plan',
tipo_de_programa_2= 'Tipo de Programa de Tratamiento/Type of Program',
fech_egres_sin_fmt= 'Fecha de Egreso de Tratamiento (Sin Formato de Fecha)/Date of Discharge',
id_mod= 'ID de SENDA para Presentación en Página Web (enmascara caracteres 5 y 6)/SENDAs ID (mask characters 5 & 6)',
ano_nac= 'Año de Nacimiento (numérico)/Year of Birth (numeric)',
fech_ing_ano= 'Año de Ingreso (numérico)/Year of Admission (numeric)',
fech_ing_mes= 'Mes de Ingreso (numérico)/Month of Admission (numeric)',
fech_ing_dia= 'Día de Ingreso (numérico)/Day of Admission (numeric)',
concat= 'ID de SENDA y HASH Concatenado (permite discriminar más de un HASH en un mismo ID)/Combination of SENDAs ID & HASH',
obs= 'Observaciones al Proceso de Limpieza y Estandarización de Casos/Observations to the Process of Data Tidying & Standardization',
dias_trat_inv= 'Días de Tratamiento Invertidos (fecha más reciente, menor valor numérico)/Treatment Days (Reversed)',
fech_nac= 'Fecha de Nacimiento/Date of Birth',
edad_al_ing= 'Edad a la Fecha de Ingreso a Tratamiento (numérico continuo)/Age at Admission to Treatment',
edad_ini_cons= 'Edad de Inicio de Consumo/Age of Onset of Drug Use',
edad_ini_sus_prin= 'Edad de Inicio de Consumo Sustancia Principal/Age of Onset of Drug Use of Primary Substance',
dias_trat_alta_temprana= 'Días de tratamiento (<90)/Less than 90 days in treatment',
motivodeegreso_mod= 'Motivo de Egreso (con abandono temprano y tardío)/Cause of Discharge (with late and early withdrawal)',
sus_principal= 'Sustancia Principal de Consumo/Primary or Main Substance of Consumption at Admission',
otras_sus1= 'Otras Sustancias (1)/Other Substances (1)',
otras_sus2= 'Otras Sustancias (2)/Other Substances (2)',
otras_sus3= 'Otras Sustancias (3)/Other Substances (3)',
sus_ini= 'Sustancia de Inicio/Starting Substance',
estado_conyugal_2= 'Estado Conyugal/Marital Status',
estatus_ocupacional= 'Condición Ocupacional/Occupational Status',
cat_ocupacional= 'Categoría Ocupacional/Occupational Category',
edad_grupos= 'Edad agrupada/Age in groups',
origen_ingreso= 'Origen de Ingreso/Motive of Admission to Treatment',
escolaridad= 'Escolaridad: Nivel Eduacional/Educational Attainment',
freq_cons_sus_prin= 'Frecuencia de Consumo de la Sustancia Principal/Frequency of Consumption of the Primary or Main Substance',
via_adm_sus_prin= 'Vía de Administración de la Sustancia Principal/Route of Administration of the Primary or Main Substance',
dias_trat_knn_imp= 'Días de Tratamiento (Imputados KNN)/Days of Treatment (Imputed KNN)',
fech_egres_knn_imp= 'Fecha de Egreso (Imputados KNN)/Date of Discharge (Imputed KNN)',
dias_trat_alta_temprana_knn_imp= 'Días de Tratamiento con Alta Temprana (<90) (Imputados KNN)/Days of Treatment w Early Withdrawal (Imputed KNN)',
fech_egres_imp= 'Fecha de Egreso (Imputados KNN & Lógico)/Date of Discharge (Imputed KNN & Logic)',
motivodeegreso_imp= 'Motivo de Egreso(Imputados KNN & Lógico)/Cause of Discharge (Imputed KNN & Logic)',
motivodeegreso_mod_imp= 'Motivo de Egreso (con abandono temprano y tardío)(Imputados KNN & Lógico)/Cause of Discharge (with late and early withdrawal)(Imputed KNN & Logic)',
dias_trat_imp= 'Días de Tratamiento (Imputados KNN & Lógico)/Days of Treatment (Imputed KNN & Logic)',
dias_trat_alta_temprana_imp= 'Días de Tratamiento con Alta Temprana (<90) (Imputados KNN & Lógico)/Days of Treatment w Early Withdrawal (Imputed KNN & Logic)',
etnia_cor= 'Etnia/Ethnic Group',
via_adm_sus_prin_act= 'Vía de Administración de la Sustancia Principal (Se aplicaron criterios de limpieza)/Route of Administration of the Primary or Main Substance (Tidy)',
nacionalidad_2= 'Segunda Nacionalidad/Second Nationality',
etnia_cor_2= 'Etnia (2)/Second Ethnic Group',
sus_ini_2= 'Segunda Sustancia de Inicio/Second Starting Substance',
sus_ini_3= 'Tercera Sustancia de Inicio/Third Starting Substance',
concat_hash_sus_prin= 'Combination of User & Primary Substance',
macrozona= "Macrozona/Macrozones",
nombre_region= " Región del Centro/Chilean Region of the Center",
comuna_residencia_cod= "Comuna de Residencia/Municipality or District of Residence",
sus_ini_mod= "Sustancia de Inicio (Sólo más frecuentes)/Starting Substance (Only more frequent)",
sus_principal_mod= 'Sustancia Principal de Consumo (Sólo más frecuentes)/Primary or Main Substance of Consumption at Admission (Only more frequent)',
origen_ingreso_mod= 'Origen de Ingreso/Motive of Admission to Treatment',
menor_60_dias_diff= 'Menor o igual a 60 días de diferencia con el registro posterior/Less or equal than 60 days of difference between the next entry',
diff_bet_treat= 'Días de diferencia con el registro posterior/Days of difference between the next entry',
id_centro_sig_trat= "ID del Centro del registro posterior/Center ID of the Next Treatment",
tipo_plan_sig_trat= "Tipo de Plan del registro posterior/Type of Plan of the Next Entry",
tipo_programa_sig_trat= "Tipo de Programa del registro posterior/Type of Program of the Next Entry",
senda_sig_trat= "SENDA del registro posterior/SENDA of the Next Entry",
motivoegreso_derivacion= "Motivo de Egreso del registro posterior/Cause of Discharge of the Next Entry",
obs_cambios= "Cambios del tratamiento en comparación al registro posterior/Changes in treatment compared to the Next Entry",
obs_cambios_ninguno= "Sin cambios del tratamiento en comparación al registro posterior/No changes in treatment compared to the Next Entry",
obs_cambios_num= "Recuento de cambios del tratamiento en comparación al registro posterior/Count of changes in treatment compared to the Next Entry",
obs_cambios_fac= "Recuento de cambios del tratamiento en comparación al registro posterior(factor)/Count of changes in treatment compared to the Next Entry(factor)"
)
#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_#_
#####to_export_labels
table_labels<-
tibble::rownames_to_column(data.frame(Hmisc::label(CONS_C1_df_dup_JUN_2020))) %>% data.frame() %>%
dplyr::rename("code" = !!names(.[1]), "label" = !!names(.[2])) %>% data.frame() %>%
dplyr::mutate(first= "cap label variable")%>%
dplyr::mutate(final= paste0(first, " ",code,' "',label,'"'))%>%
dplyr::select(-code,-label,-first)%>%
rbind('cap save "G:/Mi unidad/Alvacast/SISTRAT 2019 (github)/CONS_C1_df_dup_JUN_2020.dta", replace')%>%
rbind('cap drop id id_mod nombre_centro')%>%
rbind('cap save "G:/Mi unidad/Alvacast/SISTRAT 2019 (github)/CONS_C1_df_dup_JUN_2020_exp.dta", replace')
table_labels<-
data.frame(final='use "G:/Mi unidad/Alvacast/SISTRAT 2019 (github)/CONS_C1_df_dup_JUN_2020.dta", clear')%>%
rbind(table_labels)%>%
rename("*final"="final")
#write.csv2(table_labels,"__labels_to_stata_C1_jun_2020.do",row.names =F)
write.table(table_labels, file = "G:/Mi unidad/Alvacast/SISTRAT 2019 (github)/SUD_CL/_label_var_to_stata.do", sep = "",
row.names = FALSE, quote = FALSE,fileEncoding="UTF-8")
# dplyr::filter(label!="") %>%
# bind_rows(data.frame("code"=c("fech_egres_imp",
## "dias_trat_imp",
# "dias_trat_alta_temprana_imp",
# "motivodeegreso_mod_imp"), "label"=c("Date of Discharge (Imputed)",
## "Days of Treatment (Imputed)",
# "Days of Treatment for Early Withdrawal (Imputed)",
# "Cause of Discharge w/ Early or Late Withdrawal (Imputed)"))) %>%
CONS_C1_df_dup_JUN_2020 %>%
dplyr::arrange(hash_key, desc(fech_ing)) %>%
rio::export(file = "G:/Mi unidad/Alvacast/SISTRAT 2019 (github)/CONS_C1_df_dup_JUN_2020.dta")
save.image("G:/Mi unidad/Alvacast/SISTRAT 2019 (github)/6.RData")
#Agregar nuevas variables al codebook
#hacer codebook
#Agregar procesos a strobe
#Poner olr y arriba pondría los otros modelos.
cap do _label_var_to_stata.do
sessionInfo()
R version 4.0.2 (2020-06-22)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18363)
Matrix products: default
locale:
[1] LC_COLLATE=Spanish_Chile.1252 LC_CTYPE=Spanish_Chile.1252
[3] LC_MONETARY=Spanish_Chile.1252 LC_NUMERIC=C
[5] LC_TIME=Spanish_Chile.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] gdtools_0.2.2 radiant_1.3.2
[3] radiant.multivariate_1.3.6 radiant.model_1.3.12
[5] radiant.basics_1.3.4 radiant.design_1.3.5
[7] mvtnorm_1.1-1 radiant.data_1.3.6
[9] lubridate_1.7.9 magrittr_1.5
[11] radiant.update_1.3.0 treemapify_2.5.3
[13] ggiraph_0.7.0 chilemapas_0.2
[15] sf_0.9-3 finalfit_1.0.1
[17] lsmeans_2.30-0 emmeans_1.4.7
[19] choroplethrAdmin1_1.1.1 choroplethrMaps_1.0.1
[21] choroplethr_3.6.3 acs_2.1.4
[23] XML_3.99-0.3 RColorBrewer_1.1-2
[25] panelr_0.7.3 lme4_1.1-23
[27] Matrix_1.2-18 dplyr_1.0.0
[29] data.table_1.12.8 codebook_0.8.2
[31] Statamarkdown_0.4.5 devtools_2.3.0
[33] usethis_1.6.1 sqldf_0.4-11
[35] RSQLite_2.2.0 gsubfn_0.7
[37] proto_1.0.0 broom_0.5.6
[39] zoo_1.8-8 altair_4.0.1
[41] rbokeh_0.5.1 janitor_2.0.1
[43] plotly_4.9.2.1 kableExtra_1.1.0
[45] Hmisc_4.4-0 Formula_1.2-3
[47] survival_3.1-12 lattice_0.20-41
[49] ggplot2_3.3.1 stringr_1.4.0
[51] stringi_1.4.6 tidyr_1.1.0
[53] knitr_1.28 matrixStats_0.56.0
[55] boot_1.3-25
loaded via a namespace (and not attached):
[1] class_7.3-17 ps_1.3.3 rprojroot_1.3-2
[4] crayon_1.3.4 V8_3.1.0 MASS_7.3-51.6
[7] AlgDesign_1.2.0 nlme_3.1-148 backports_1.1.8
[10] rlang_0.4.6 readxl_1.3.1 performance_0.4.6
[13] nloptr_1.2.2.1 callr_3.4.3 xgboost_1.1.1.1
[16] data.tree_0.7.11 rjson_0.2.20 ggmap_3.0.0
[19] bit64_0.9-7 jqr_1.1.0 glue_1.4.1
[22] sjPlot_2.8.4 parallel_4.0.2 processx_3.4.2
[25] shinyAce_0.4.1 classInt_0.4-3 randomizr_0.20.0
[28] tcltk_4.0.2 haven_2.3.1 tidyselect_1.1.0
[31] rio_0.5.16 sjmisc_2.8.5 chron_2.3-55
[34] xtable_1.8-4 evaluate_0.14 RgoogleMaps_1.4.5.3
[37] cli_2.0.2 rstudioapi_0.11 miniUI_0.1.1.1
[40] sp_1.4-2 geojsonio_0.9.2 rpart_4.1-15
[43] jtools_2.0.5 sjlabelled_1.1.5 RJSONIO_1.3-1.4
[46] maps_3.3.0 shiny_1.4.0.2 gistr_0.5.0
[49] xfun_0.14 parameters_0.7.0 pkgbuild_1.0.8
[52] cluster_2.1.0 ggfittext_0.9.0 tibble_3.0.1
[55] ggrepel_0.8.2 polycor_0.7-10 png_0.1-7
[58] withr_2.2.0 bitops_1.0-6 ranger_0.12.1
[61] plyr_1.8.6 cellranger_1.1.0 e1071_1.7-3
[64] coda_0.19-3 pillar_1.4.4 geojson_0.3.2
[67] multcomp_1.4-13 fs_1.4.1 vctrs_0.3.1
[70] ellipsis_0.3.1 generics_0.0.2 clustMixType_0.2-5
[73] rgdal_1.5-8 tools_4.0.2 foreign_0.8-80
[76] munsell_0.5.0 fastmap_1.0.1 compiler_4.0.2
[79] pkgload_1.1.0 abind_1.4-5 httpuv_1.5.4
[82] tigris_0.9.4 sessioninfo_1.1.1 rgeos_0.5-3
[85] gridExtra_2.3 visNetwork_2.0.9 later_1.1.0.1
[88] NeuralNetTools_1.5.2 jsonlite_1.6.1 WDI_2.6.0
[91] scales_1.1.1 carData_3.0-4 estimability_1.3
[94] lazyeval_0.2.2 promises_1.1.1 car_3.0-8
[97] latticeExtra_0.6-29 reticulate_1.16 effectsize_0.3.1
[100] checkmate_2.0.0 rmarkdown_2.2 openxlsx_4.1.5
[103] sandwich_2.5-1 statmod_1.4.34 webshot_0.5.2
[106] forcats_0.5.0 pander_0.6.3 import_1.1.0
[109] yaml_2.2.1 systemfonts_0.2.3 htmltools_0.4.0
[112] memoise_1.1.0 viridisLite_0.3.0 jsonvalidate_1.1.0
[115] digest_0.6.25 assertthat_0.2.1 mime_0.9
[118] rappdirs_0.3.1 repr_1.1.0 bayestestR_0.6.0
[121] units_0.6-6 remotes_2.1.1 blob_1.2.1
[124] DiagrammeR_1.0.6.1 splines_4.0.2 labeling_0.3
[127] pdp_0.7.0 hms_0.5.3 modelr_0.1.8
[130] rmapshaper_0.4.4 colorspace_1.4-1 base64enc_0.1-3
[133] mnormt_2.0.0 tmvnsim_1.0-2 nnet_7.3-14
[136] Rcpp_1.0.4.6 fansi_0.4.1 R6_2.4.1
[139] grid_4.0.2 crul_0.9.0 lifecycle_0.2.0
[142] acepack_1.4.1 labelled_2.5.0 zip_2.0.4
[145] writexl_1.3 curl_4.3 geojsonlint_0.4.0
[148] pryr_0.1.4 minqa_1.2.4 testthat_2.3.2
[151] snakecase_0.11.0 desc_1.2.0 TH.data_1.0-10
[154] gower_0.2.1 htmlwidgets_1.5.1 markdown_1.1
[157] purrr_0.3.4 GPArotation_2014.11-1 rvest_0.3.5
[160] insight_0.8.4 htmlTable_1.13.3 patchwork_1.0.0
[163] codetools_0.2-16 prettyunits_1.1.1 psych_1.9.12.31
[166] vegawidget_0.3.1 gtable_0.3.0 DBI_1.1.0
[169] httr_1.4.1 highr_0.8 KernSmooth_2.23-17
[172] reshape2_1.4.4 farver_2.0.3 uuid_0.1-4
[175] hexbin_1.28.1 mice_3.9.0 xml2_1.3.2
[178] shinyFiles_0.8.0 ggeffects_0.14.3 readr_1.3.1
[181] pwr_1.3-0 bit_1.1-15.2 sjstats_0.18.0
[184] jpeg_0.1-8.1 pkgconfig_2.0.3 maptools_1.0-1
[187] httpcode_0.3.0